【发布时间】:2018-05-12 04:35:06
【问题描述】:
我的用户表单中有一个文本字段,它与没有空格的标签标题同名。例如,文本框将命名为“SampleName”,标签标题将命名为“Sample Name”。按提交时,我希望将数据输入到与标题和文本字段名称相同的相应列下的工作簿中。我无法从列标题中删除空间,因为导入另一个软件需要该空间。但是,当我点击提交时,它总是返回一个运行时错误,无法获取匹配属性。当我在手动输入 Label.ctlname.Caption 时尝试此代码时,它工作正常。有什么建议吗?
Dim ssheet As Worksheet
Dim rngsource As Range
Set ssheet = ThisWorkbook.Sheets("Sheet1")
nr = ssheet.Cells(Rows.Count, 1).End(xlUp).Row + 1
With ssheet
Set rngsource = Range(Cells(1, 1), Cells(1, Range("A1").End(xlToRight).Column))
Dim ctl
Dim ctlname As String
For Each ctl In Me.Controls
If TypeOf ctl Is msforms.TextBox Then
ctlname = "Label" & ctl.Name & ".Caption"
.Cells(nr, Application.WorksheetFunction.Match(ctlname, rngsoruce, 0)) = ctl
ctl.Text = ""
End If
Next ctl
End With
【问题讨论】:
-
显示这个
Set rngsource = Range(Cells(1, 1), Cells(1, Range("A1").End(xlToRight).Column))合格吗?? -
那么你想从我们这里得到什么?如何添加空间?为什么你的比赛失败了?如何正确制作字符串?看来您在
"Label"末尾缺少.。 -
.Cells(nr, Application.WorksheetFunction.Match(ctlname, rngsoruce, 0)) = ctl-rngsoruce?将Option Explicit放在模块顶部,这样您就可以轻松找到这些拼写错误。 -
要添加@Gary'sStudent 所做的类似声明,
nr = ssheet.Cells(Rows.Count, 1).End(xlUp).Row + 1可能也必须被限定,除非 ssheet 是活动表。 -
@ScottCraner 我特别关注我的比赛失败的原因。为了进一步澄清,标签的名称与前面带有“标签”的文本框相同。例如,文本框为“SampleName”,标签为“LabelSampleName”,标签标题为“Sample Name”。我认为基于此检索标签会更容易,然后在文本框名称中添加空格。如果我手动将标签的名称输入到匹配中,它可以正常工作。一旦我将 ctlname 字符串输入到匹配函数中,它就会给我带来问题