【问题标题】:VBA ActiveX label in a sheet工作表中的 VBA ActiveX 标签
【发布时间】:2018-03-18 06:55:30
【问题描述】:

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

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

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

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

谢谢!

【问题讨论】:

    标签: vba excel


    【解决方案1】:

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

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

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

    最后,更改MyLbl对象的Caption

    代码

    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
    

    【讨论】:

    • 嗨 Shai,感谢您的详细解释,我现在了解标签的工作原理。这是我所做的:我将一个新标签拖到工作表中,将其命名为“Label1”,使用您为新 Sub 键入的代码并将标签分配给宏。我确定代码是正确的,但标签信息仍然没有改变,我在使用标签时是否遗漏了什么?
    • @TaylorAndy 这取决于您要对代码执行的操作,您是否希望标签的标题在“F4”中的值更改时更改?或者你想按标签这样做?
    • 哦,对不起,我想我应该指定,我是个菜鸟 T.T,我希望标签的标题在 F4 更改时更改。所以如果 Range("F4").Value = 2,标签会显示 2。感谢您的耐心等待。
    • @TaylorAndy ok 那么,试试Edit 1下的代码,你需要把它复制到相关的工作表模块中
    猜你喜欢
    • 2019-08-07
    • 1970-01-01
    • 1970-01-01
    • 2021-07-09
    • 2016-05-18
    • 2021-04-12
    • 2022-12-19
    • 2020-12-02
    • 1970-01-01
    相关资源
    最近更新 更多