我在Excel中有一个CommandButton,发现.Caption
和.Text
属性都返回了按钮的相同可见文本。这是我用来查看值的代码:
Debug.Print ActiveSheet.Buttons("My_Command_Button").Caption
Debug.Print ActiveSheet.Buttons("My_Command_Button").Text
这两个属性之间的区别是什么?
答案 0 :(得分:6)
技巧问题。如果检查fm20.dll(或VBE的对象浏览器)中的CommandButton
共同类定义,您会发现它没有 拥有 { 1}}属性:
ActiveX控件是在运行时通过扩展来组合的,因此实际上是在驱动控件在电子表格或Text
(或其他任何方式)中嵌入的特定属性由“拥有”对象的OLE容器提供。如果考虑一下,这在一定程度上是有意义的-为什么UserForm
应该关心它的CommandButton
或Left
属性是什么?您永远不需要拥有不是其他父窗口或容器的子项的Top
,并且CommandButton
也不应该确定它在窗口中的位置-那是窗户的工作。这是他们没有公共构造函数的部分原因:
CommandButton
如果能够实例化无父母的Dim example As CommandButton
Set example = New CommandButton '<-- Nope.
,您会发现设置按钮上文本的唯一方法是设置CommandButton
属性。这是因为在深入的Windows API级别上,它是一个窗口(因为它具有hWnd),并且约定是Windows具有.Caption
属性。 显示的方式特定于实现。在这种特定情况下,它们可以互换使用,但是Caption
属性是“真实的”,而.Caption
属性则反映了它。除非您对它所做的事情极其奇怪(例如获取其hWnd并直接与Windows API结合使用),否则它们在所有意图和目的上都是同一件事。