工作表中的VBA ActiveX标签

时间:2018-03-18 06:55:30

标签: excel vba excel-vba

我想在Excel中有一个ActiveX标签,其内部值与更新时Range(“F4”)中的值相对应。它不是一种形式(标签上的很多信息都在表格上),而只是在常规工作表上。我怎样才能做到这一点?

我一直在使用它来为宏分配标签,但它不起作用:

Sub CurrentPoints()
   Worksheets("Sheet1").Label1.Value = Range("F4").Value
End Sub

必要的计算已经完成并在单元格F4中正确显示。

谢谢!

1 个答案:

答案 0 :(得分:0)

我更喜欢在我的代码中定义和Set我的所有对象。

首先,将Worksheets("Sheet1")设置为Sht对象(类型Worksheet)。

其次,将Label1 Active-X设置为MyLbl,object(类型OLEObject)。

最后,更改Caption对象的MyLbl

<强> 代码

Option Explicit

Sub CurrentPoints()

Dim Sht  As Worksheet
Dim MyLbl As OLEObject

' set the worksheet object
Set Sht = ThisWorkbook.Worksheets("Sheet1")

' set the Active-X label object
Set MyLbl = Sht.OLEObjects("Label1")

' change the Caption to the value in Range "F4")
MyLbl.Object.Caption = Sht.Range("F4").Value

End Sub

修改1 :在客户注释后,需要将代码移至Worksheet模块,并将其与Worksheet_Change事件绑定。

修改后的代码

Private Sub Worksheet_Change(ByVal Target As Range)

Dim MyLbl As OLEObject

' check if the cell that was changed is "F4"
If Not Intersect(Target, Range("F4")) Is Nothing Then

    ' set the Active-X label object
    Set MyLbl = ActiveSheet.OLEObjects("Label1")

    ' change the Caption to the value in Range "F4")
    MyLbl.Object.Caption = Target.Value
End If

End Sub