工作表中的 VBA ActiveX 标签



我想在Excel中有一个ActiveX标签,里面的值对应于Range("F4"(中的值,因为它在更新时。它不是在表单中(标签上的许多信息都在表单上(,而只是在常规工作表上。我怎样才能做到这一点?

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

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

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

谢谢!

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

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

其次,将 Label1 Active-X 设置为 MyLbl , 对象 (类型 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