代码之家  ›  专栏  ›  技术社区  ›  ChrisB

VBA中CommandButton的.caption和.text属性之间有什么区别?

  •  5
  • ChrisB  · 技术社区  · 8 年前

    我在Excel中有一个CommandButton,发现 .Caption 和 .Text 属性返回按钮的相同可见文本。下面是我用来查看值的代码:

    Debug.Print ActiveSheet.Buttons("My_Command_Button").Caption
    Debug.Print ActiveSheet.Buttons("My_Command_Button").Text
    

    这两个属性之间有什么区别?区别重要吗?

    1 回复  |  直到 8 年前
        1
  •  6
  •   Comintern    8 年前

    骗人的问题。如果你检查 CommandButton 在fm20.dll中的coclass定义(或者在VBE的对象浏览器中,您会发现它没有 一 Text 属性:

    CommandButton in Object Browser

    ActiveX控件在运行时通过扩展进行合成,因此特定于控件如何嵌入到电子表格或 UserForm 命令按钮 不管是什么 Left 或 Top 财产是什么?你不应该有一个 它不是另一个父窗口或容器的子窗口或容器,也不是 命令按钮 确定它在窗口中的位置-这是窗口的工作。这也是他们没有公共建设者的部分原因:

    Dim example As CommandButton
    Set example = New CommandButton     '<-- Nope.
    

    如果你 是 命令按钮 ,您会发现设置按钮上的文本的唯一方法是设置 .Caption 财产。这是因为在windowsapi的深层次上,它是一个窗口(因为它有一个hWnd),约定是Windows有一个 Caption 财产。怎么回事 显示 是特定于实现的。在这个具体的例子中,它们可以互换处理,但是 .标题 财产是“真实的”,而 .Text 属性镜像它。除非你用它做了一些非常奇怪的事情(比如获取它的hWnd并直接用windowsapi使用它),否则它们的意图和目的都是一样的。