Свойства текстового поля пользовательской формы Exel 2016 - PullRequest
0 голосов
/ 04 октября 2018

У меня проблема со свойствами текстового поля пользовательской формы.Я пытаюсь написать простой саб, чтобы изменить цвет текстового поля на серый, когда он отключен.Код, который я пытаюсь написать (который работает на других формах VB за пределами Excel):

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

Где txtSel - аргумент, принимающий имя элемента управления Textbox.Однако объявление переменной / аргумента как Textbox вызывает совершенно другой набор свойств, доступных через код, и Backcolor не является одним из них.У меня не было проблем с изменением свойств текстового поля, как это в других формах VB, но Excel не хочет сотрудничать.Любые мысли будут оценены.

1 Ответ

0 голосов
/ 04 октября 2018

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)
...