Exel 2016 Userform文本框属性

时间:2018-10-04 14:59:35

标签: excel vba textbox userform

我在Userform文本框属性上遇到问题。我正在尝试编写一个简单的子项,以在禁用文本框时将其颜色更改为灰色。我尝试编写的代码(可在Excel之外的其他VB窗体上使用)是:

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

其中txtSel是接受文本框控件名称的参数。但是,将变量/参数声明为Textbox会带来一组完全不同的可通过代码使用的属性,而Backcolor并不是其中之一。我可以很轻松地在其他VB表单中更改文本框属性,但Excel不想合作。任何想法都将不胜感激。

1 个答案:

答案 0 :(得分:3)

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

  

enter image description here

     

VBA标准库和主机应用程序对象模型库不能向下移动或未引用。

使用其来源的库来限定类型。并在ByVal时通过它,因为这里没有理由(隐式)通过ByRef

Private Sub ColorTxtBoxDisable(ByVal txtSel As MSForms.TextBox)