MS ACCESS VBA - лучший способ изменить все значения свойств текстовых полей формы сразу - PullRequest
0 голосов
/ 26 февраля 2020

У меня есть форма с 3 текстовыми полями, и я хочу изменить значения их свойств в соответствии с некоторыми событиями. Моя идея состоит в том, чтобы установить эти свойства для переменных глобальной формы, чтобы использовать их всякий раз, когда я хочу с функцией или модулем (это зависит от вашего предложения).

Предполагая, что я хочу изменить все свойство textboxs.enabled нажав кнопку, и я хочу изменить другое свойство, если это необходимо в будущем (например, bordercolor), мой пример таков: в форме VBA,

Option Compare Database
Option Explicit
Private Const AllTxtboxes = *** all txtboxes ***

в кнопке VBA

Private Sub button1_Click()
AllTxtboxes.enabled = True
End sub

Заранее спасибо.

1 Ответ

1 голос
/ 28 февраля 2020

Вам необходимо l oop через все элементы управления и определить те, которые вы хотите изменить. Проблема в том, что каждый тип элемента управления имеет свои собственные свойства, поэтому вам нужно убедиться, что вы находитесь в правильном.

И для этого существует свойство, общее для всех элементов управления с именем Tag

Там вы можете указать значение и проверить его. Это действительно полезно, чтобы выбрать только то, что вы хотите.

Я сделал простую форму с 6 текстовыми полями:

enter image description here

Обратите внимание, что в дизайне вид, панель свойств справа, вкладка прочее , последнее свойство Tag (иногда оно выглядит как дополнительная информация или что-то подобное).

Там я набрал 99, но только в текстовых полях 2, 4 и 6, потому что это те текстовые поля, которые я хочу обработать (это будет своего рода массив текстовых полей )

Я добавил командную кнопку в изменить цвет этих текстовых полей на красный при нажатии. Мой код:

Private Sub CMD_CHANGE_FONT_COLOR_Click()
Me.Painting = False
Dim MyControl As Control
Dim MyTxt As TextBox


For Each MyControl In Me.Controls
    If MyControl.Tag = 99 Then
        'we set MyTxt to MyControl so we can use Intellisense, not really needed, but it makes coding easier
        Set MyTxt = MyControl
        MyTxt.ForeColor = vbRed
        Set MyTxt = Nothing
    End If
Next MyControl

Me.Painting = True

End Sub

Когда форма загружается, вы увидите:

enter image description here

Но после нажатия на кнопку команды, передний цвет этих трех текстовых полей будет красным:

enter image description here

Вот вам go. Поэтому каждый раз, когда вы хотите что-то сделать с этим массивом текстовых полей , вы можете использовать этот код для l oop и изменить нужные свойства.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...