为了找到问题,我已将我的代码剥离出来。这是从一个单元格读取到UserForm上的标签(PartInformation)。我可以使用字符串使其工作但是当我转换为从单元格读取时,我得到错误" 1004应用程序定义"或"用户定义的错误"。我甚至用它来读取Now()
到UserForm,这是有效的。请帮我理解我哪里错了。谢谢你的帮助。
Private Sub OkayCommandButton_Click()
Worksheets("Parts List").Select
Application.ScreenUpdating = False
Range("A2").Select
Cells.find(What:="34300TMA010", After:=Range("A2"), LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
'this does not work
PartInformation = Worksheets("Parts List").Range(ActiveCell)
'this works
PartInformation = "yes"
End Sub
答案 0 :(得分:1)
ActiveCell
似乎不是Range
的有效参数。使用Range
,您尝试获取一个单元格,但您可能已经使用ActiveCell
。试试这个:
PartInformation = ActiveCell
答案 1 :(得分:1)
解决方案:这对我有用。
Private Sub OkayCommandButton_Click()
' ...your other code...
UserForm1.PartInformation.Caption = ActiveCell.Value
End Sub
说明:包含其可见文字的标签的属性为.Caption
。因此,如果要更改文本,则需要更改该属性,而不仅仅是Label元素本身。同样,使用.Value
属性访问单元格的值。
(顺便说一下,ActiveCell
是一个应用程序级别的对象,而不是工作表级别。因此Sheets("sheet name").ActiveCell
将不起作用。Link for details。.Range
需要一个地址,例如" $ 12美元"但是您指定的是单元格对象,而不是其地址。正确的方法可能是PartInformation.Caption = Worksheets("Parts List").Range(ActiveCell.Address).Value
)