gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 16:25:19 29 4
gpt4 key购买 nike

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

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

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

最佳答案

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

CommandButton in Object Browser

ActiveX 控件是在运行时通过扩展组合而成​​的,因此特定于控件如何嵌入到电子表格或 UserForm(或与此相关的任何其他内容)中的属性是实际上是由“拥有”该对象的 OLE 容器驱动的。如果您考虑一下,这是有一定道理的 - 为什么 CommandButton 应该关心它的 LeftTop 属性是什么?您不需要有一个不是另一个父窗口或容器的子级的 CommandButton,并且 CommandButton 不负责确定在哪里它在窗口内——这就是窗口的工作。这是他们没有公共(public)构造函数的部分原因:

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

如果您能够实例化一个无父CommandButton,您会发现在按钮上设置文本的唯一方法是设置 .Caption 属性。这是因为在 Windows API 的深处,它是一个窗口(因为它有一个 hWnd),并且窗口的惯例是有一个 Caption 属性。如何显示是特定于实现的。在此特定实例中,它们可以互换对待,但 .Caption 属性是“真实的”,而 .Text 属性反射(reflect)了它。除非您用它做一些极其奇怪的事情(例如获取它的 hWnd 并直接通过 Windows API 使用它),否则它们在所有意图和目的上都是相同的。

关于vba - VBA 中 CommandButton 的 .caption 和 .text 属性有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52231210/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com