powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / [Excel][UserForm] Как программно обойти только нужные элементы?
11 сообщений из 11, страница 1 из 1
[Excel][UserForm] Как программно обойти только нужные элементы?
    #38093673
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В книге вызывается форма по заполнению данными некой таблицы... В той форме есть различные элементы (TextBox, ComboBox, ListBox) для ввода данных, есть и кнопки управления...
В таблице порядок следования колонок определён заранее. Как программно обойти в нужной последовательности все элементы редактирования, дабы записать их значения в ту таблицу?

Может TabIndex как-то в этом поможет? Количество колонок в таблице ведь известно, количество элементов ввода данных такое же...
----------
Cache for Windows (x86-64) 2010.2.3 (Build 702) Tue Feb 15 2011 14:20:27 EST
Cache for Windows (x86-64) 2012.1.1 (Build 602) Wed Mar 7 2012 22:36:34 EST
...
Рейтинг: 0 / 0
[Excel][UserForm] Как программно обойти только нужные элементы?
    #38093804
Aster32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa,

Нужные элементы - .Tabstop = True, ненужные, соответственно .Tabstop = False
...
Рейтинг: 0 / 0
[Excel][UserForm] Как программно обойти только нужные элементы?
    #38093871
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
[Excel][UserForm] Как программно обойти только нужные элементы?
    #38094032
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaМожет TabIndex как-то в этом поможет?имхо не стоит делать именно так. А что связывает таблицу и контролы? допустим имена столбцов и имена контролов? И что такое таблица? БД, лист, массив...?
...
Рейтинг: 0 / 0
[Excel][UserForm] Как программно обойти только нужные элементы?
    #38094625
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProА что связывает таблицу и контролы?
Пока только порядок их следования... Т.е. первый, второй и т.д. Как столбцы так и контролы... Значение i-того контрола нужно поместить, при добавлении строки, в i-тый столбец

Shocker.Proдопустим имена столбцов и имена контролов?
Пока такого нет...

Shocker.ProИ что такое таблица? БД, лист, массив...?
На листе нарисована шапка обычной таблички (некая выходная форма) и кнопка "Добавить строку". По нажатии на кнопку показывается форма с контролами (около 20шт.) они заполняются пользователем. Потом в форме давят кнопку "Записать".
После этого добавляется очередная строка в ту табличку и нужно переписать значения контролов в соответствующие колонки...

Вот интересуюсь как это сделать в некоем цикле?

Макро подстановок (как в моём языка) у ВБА, я так понял, нет... Объект не вызывается по строковой переменной, как например в JS...
Т.ч. прошу советов у матёрых ВБАшников, как такое оптимальнее сделать?
...
Рейтинг: 0 / 0
[Excel][UserForm] Как программно обойти только нужные элементы?
    #38094634
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The_PristМожет быть это поможет?
Как быстро заполнить/очистить элементы на форме(TextBox-ы, ComboBox-ы)
Это уже хорошая наводка!
А что влияет на порядок следования элементов в
Код: vbnet
1.
UserForm1.Controls


?

Потому как например в JS элементы будут неупорядочены в таком проходе

Код: vbnet
1.
2.
3.
    For Each oControl In UserForm1.Controls
        If TypeOf oControl Is MSForms.TextBox Then oControl.Value = ""
    Next oControl



А мне нужно пройтись по ним в нужном мне порядке...
...
Рейтинг: 0 / 0
[Excel][UserForm] Как программно обойти только нужные элементы?
    #38094643
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как вариант можно поиспользовать это

Код: vbnet
1.
UserForm1.Controls("идентификатор_контрола").Valuei



Это наверное меня устроит!
Если конечно вы еще что-то более интересное не подсоветуете.

Спасибо вам за помощь! Она для меня весьма кстати.

P.S.
Пока все не напились - с наступающим всех!!!
...
Рейтинг: 0 / 0
[Excel][UserForm] Как программно обойти только нужные элементы?
    #38094724
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaТ.ч. прошу советов у матёрых ВБАшниковkrvsaПока только порядок их следования...Порядок их следования где? В коллекции Controls - это одно, по Tab - это другое. Так как и то и другое легко ломается при редактировании формы, ни то, ни другое я бы задействовать не стал. Самое оптимальное - иметь таблицу соответсвия. Например номера столбца и имени контрола. Как организовать эту таблицу - решать вам, через Array, через список констант, на листе и т.п.
...
Рейтинг: 0 / 0
[Excel][UserForm] Как программно обойти только нужные элементы?
    #38094988
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProПорядок их следования где? В коллекции Controls - это одно, по Tab - это другое.
Как они располагаются в Controls я не в курсе... Могу повлиять только через Tab.

Shocker.ProСамое оптимальное - иметь таблицу соответсвия. Например номера столбца и имени контрола. Как организовать эту таблицу - решать вам, через Array, через список констант, на листе и т.п.
В итоге так и сделали... Создан массив стринговый, где i-тый элемент равен идентификатору контрола для i-того столбца.
Т.ч. я думаю проблема решена.

Всем еще раз спасибо!
...
Рейтинг: 0 / 0
[Excel][UserForm] Как программно обойти только нужные элементы?
    #38096073
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa,

контролы перебираются в цикле в том порядке, в котором были созданы на форме.
А решение Вам самое верное посоветовал Shocker.Pro, которым Вы и воспользовались.
...
Рейтинг: 0 / 0
[Excel][UserForm] Как программно обойти только нужные элементы?
    #38096112
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The_Pristконтролы перебираются в цикле в том порядке, в котором были созданы на форме.
Ясно...
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / [Excel][UserForm] Как программно обойти только нужные элементы?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]