我想在Excel中有一个ActiveX标签,其内部值与更新时Range(“F4”)中的值相对应。它不是一种形式(标签上的很多信息都在表格上),而只是在常规工作表上。我怎样才能做到这一点?
我一直在使用它来为宏分配标签,但它不起作用:
Sub CurrentPoints()
Worksheets("Sheet1").Label1.Value = Range("F4").Value
End Sub
必要的计算已经完成并在单元格F4中正确显示。
谢谢!
答案 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