Excel 2016 用户表单文本框属性

问题描述 投票:0回答:1

我的用户表单文本框属性有问题。我正在尝试编写一个简单的子程序,以在禁用文本框时将其颜色更改为灰色。我尝试编写的代码(适用于 Excel 之外的其他 VB 表单)是:

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

其中 txtSel 是接受文本框控件名称的参数。但是,将变量/参数声明为 Textbox 会带来通过代码提供的一组完全不同的属性,而 Backcolor 不是其中之一。我在其他 VB 窗体中更改文本框属性时没有遇到任何问题,但 Excel 不想配合。任何想法将不胜感激。

excel vba textbox userform
1个回答
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)
© www.soinside.com 2019 - 2024. All rights reserved.