Excel 2016 用户窗体文本框属性

Exel 2016 Userform Textbox Properties

我遇到了用户窗体文本框属性的问题。我正在尝试编写一个简单的 sub 来在文本框被禁用时将其颜色更改为灰色。我尝试编写的代码(适用于 Excel 之外的其他 VB 表单)是:

Private Sub ColorTxtBoxDisable(txtSel As TextBox)
    txtSel.BackColor = Color.Gray
End Sub

其中 txtSel 是接受文本框控件名称的参数。但是,将 variable/argument 声明为文本框会带来一组完全不同的可通过代码使用的属性,Backcolor 不是其中之一。我在其他 VB 表单中像这样更改文本框属性没有遇到任何问题,但 Excel 不想合作。如有任何想法,我们将不胜感激。

txtSel 是接受 TextBox 控制的参数。不是它的名字。它是一个对象引用,其中 TextBox 是在包含 TextBox 类型的任何第一个引用类型库中定义的类型,因为它是不合格的。由于 Excel 是宿主应用程序,它优先于 MSForms 类型库,后者定义了您要使用的 TextBox 控件。因此,VBA 将 TextBox 解析为 Excel.TextBox,而这不是您要查找的文本框。

The VBA standard library and the host application object model library can't be moved down or un-referenced.

用它来自的库来限定类型。并在您使用它时传递它 ByVal,因为没有理由(隐含地)在这里传递它 ByRef

Private Sub ColorTxtBoxDisable(ByVal txtSel As MSForms.TextBox)