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