我的用户表单文本框属性有问题。我正在尝试编写一个简单的子程序,以在禁用文本框时将其颜色更改为灰色。我尝试编写的代码(适用于 Excel 之外的其他 VB 表单)是:
Private Sub ColorTxtBoxDisable(txtSel As TextBox)
txtSel.BackColor = Color.Gray
End Sub
其中 txtSel 是接受文本框控件名称的参数。但是,将变量/参数声明为 Textbox 会带来通过代码提供的一组完全不同的属性,而 Backcolor 不是其中之一。我在其他 VB 窗体中更改文本框属性时没有遇到任何问题,但 Excel 不想配合。任何想法将不胜感激。
txtSel
是接受 TextBox
控件的参数。不是它的名字。它是一个对象引用,其中 TextBox
是在包含 TextBox
类型的任何第一个引用的类型库中定义的类型,因为它是非限定的。由于 Excel 是主机应用程序,因此它优先于 MSForms 类型库,后者定义了您要使用的 TextBox
控件。因此,VBA 将 TextBox
解析为 Excel.TextBox
,而这不是您要寻找的文本框。
VBA 标准库和宿主应用程序对象模型库不能下移或取消引用。
使用其来源的库来限定类型。并在您执行此操作时传递它
ByVal
,因为没有理由(隐式)在这里传递它 ByRef
。
Private Sub ColorTxtBoxDisable(ByVal txtSel As MSForms.TextBox)