Excel 在vba6中如何将值从单元格传递到用户表单标签

Excel 在vba6中如何将值从单元格传递到用户表单标签,excel,vba,Excel,Vba,为了发现问题,我已经将代码精简为裸代码。这是将单元格中的内容读入用户表单上的标签(PartInformation)。我可以使用字符串使其工作,但当我切换到从单元格读取时,会出现错误“1004应用程序定义”或“用户定义错误”。我甚至用它来读取用户表单的Now()。请帮助我理解我的错误所在。谢谢你帮助我 Private Sub OkayCommandButton_Click() Worksheets("Parts List").Select Application.ScreenUpd

为了发现问题,我已经将代码精简为裸代码。这是将单元格中的内容读入用户表单上的标签(PartInformation)。我可以使用字符串使其工作,但当我切换到从单元格读取时,会出现错误“1004应用程序定义”或“用户定义错误”。我甚至用它来读取用户表单的
Now()。请帮助我理解我的错误所在。谢谢你帮助我

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    

似乎
ActiveCell
不是
Range
的有效参数。使用
Range
,您试图获取一个单元格,但仅使用
ActiveCell
,您可能已经拥有了该单元格。试试这个:

PartInformation = ActiveCell

解决方案:这对我很有效

Private Sub OkayCommandButton_Click()
    ' ...your other code...
    UserForm1.PartInformation.Caption = ActiveCell.Value
End Sub

说明:包含可见文本的标签的属性是
.Caption
。因此,如果要更改文本,则需要更改该属性,而不仅仅是Label元素本身。同样,可以使用
.value
属性访问单元格的值


(顺便说一句,
ActiveCell
是应用程序级对象,而不是工作表级对象。因此,
Sheets(“工作表名称”)。ActiveCell
将不起作用。
。Range
需要一个地址,例如“$A$12”,但您指定的是单元格对象,而不是其地址。正确的方法可能是
PartInformation.Caption=工作表(“明细表”).Range(ActiveCell.Address).Value

这也适用。搞什么鬼。。。我想我需要做的就是添加地址。万分感谢!!是的,你可以这样做,但这有点像说“我母亲的母亲的女儿是我母亲”:-)这就是为什么我提出了一个更简单的建议。;-)@jimneely我会进一步解释,因为你说你不知道为什么会这样。此代码相当于PartInformation.Caption=ActiveCell.Value,因为当您不提供属性(.Caption和.Value)时,VBA使用的是默认属性,这两个属性恰好是这两个属性。@jimneely另外,您的Cell.Find代码行的末尾有一个“.Activate”。这使找到的单元格成为“活动”单元格,ActiveCell是一种简单的方法,可以直接引用该单元格。@jimneely您还需要什么吗?如果没有,我能说服你接受答案吗?