Динамический доступ к свойствам объекта по имени объекта - PullRequest
0 голосов
/ 11 октября 2018

У меня есть несколько текстовых полей, которые я хочу циклически перебирать и устанавливать их текстовые значения всякий раз, когда пользователь нажимает кнопку, по одному полю каждый щелчок,

Все они имеют одинаковые имена с добавленным в конце числом

Light_Number_01
Light_Number_02
Light_Number_03
Light_Manufacturer_01
Light_Manufacturer_02
Light_Manufacturer_03

Я хочу, чтобы все текстовые поля имели одинаковые числовые значения, заканчивающиеся одним и тем же кликом, мой текущий мыслительный процесс заключался в том, чтобы сделать что-то вроде этого

Light_Pointer = 01
Light_Number_Pointer = "Light_Number_" & Light_Pointer
Light_Manufacturer_Pointer = "Light_Manufacturer_" & Light_Pointer
Light_Number_Pointer.Text = 'Logic from other parts of the program
Light_Manufacturer_Pointer.Text = 'Logic from other parts of the program

Я надеялся бытьв состоянии сделать что-то подобное, то есть получить доступ к текстовым полям по их имени,

Я надеюсь сделать это как можно более простым, поскольку это, вероятно, будет поддерживаться даже более опытными программистами, чем я вбудущее, но я готов рассмотреть более сложные решения, если это не сработает

1 Ответ

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

Вы можете использовать Controls() для доступа к элементу управления по его имени

Dim i As Long
i = 2
MyForm.Controls("Light_Number_" & Format$(i, "00")).Text = ""         'same like MyForm.Light_Number_02.Text
MyForm.Controls("Light_Manufacturer_" & Format$(i, "00")).Text = ""   'same like MyForm.Light_Manufacturer_02.Text

Обратите внимание, что Format$(i, "00") гарантирует, что i всегда преобразуется в двузначное число с начальным нулем (если i меньше 10).
Это гарантирует, что вы можете, например, использовать цикл, который отсчитывает от For i = 1 To 10 и автоматически добавляет начальные нули.

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