我想在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