如何将值从单元格传递到vba6中的userform标签

时间:2015-06-25 04:13:22

标签: excel-vba vba excel

为了找到问题,我已将我的代码剥离出来。这是从一个单元格读取到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    

2 个答案:

答案 0 :(得分:1)

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

PartInformation = ActiveCell

答案 1 :(得分:1)

解决方案:这对我有用。

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

enter image description here

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

(顺便说一下,ActiveCell是一个应用程序级别的对象,而不是工作表级别。因此Sheets("sheet name").ActiveCell将不起作用。Link for details.Range需要一个地址,例如" $ 12美元"但是您指定的是单元格对象,而不是其地址。正确的方法可能是PartInformation.Caption = Worksheets("Parts List").Range(ActiveCell.Address).Value