Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.06.2017, 17:16   #1
peq
Форумчанин
 
Регистрация: 01.03.2009
Сообщений: 230
По умолчанию собрать имя элемента формы в коде vba

на листе есть пул чекбоксов
их имена отличаются последней цифрой и выглядят они так {Chb1, Chb2, ...}
я хочу перебрать их значения и загнать в массив переменные {0,1} соответсвующие value чекбокса с аналогичным номером. (massiv(1) соответствует Chb1)

я предполагал возможным это сделать через определение подобного вида
dim sh as string
sh = "Worksheets(" & Chr(34) & "Настройки" & Chr(34) & ").Chb" & (i - 4) & ".Value"

но в условии использовать такую запись не могу, строка

if sh=true then

выдает ошибку.
если я прописываю в условии чекбокс в явном виде - ошибки нет.

вопрос, что я сделал не так? (или не сделал так)
можно ли вообще перебирать параметры элементов управления формы подобным образом в коде vba в принципе?
peq вне форума Ответить с цитированием
Старый 23.06.2017, 17:27   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

чекбоксы могут находиться в форме, в листе, в разных листах..
о Ваших чекбоксах никто ничего не знает, поэтому вряд-ли помогут без файла примера или точного описания
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 23.06.2017, 17:45   #3
peq
Форумчанин
 
Регистрация: 01.03.2009
Сообщений: 230
По умолчанию

а если так переформулировать:
такая запись работает корректно (внутрь условия пускает)
If Worksheets("Настройки").Chb1.Value = True Then

такая запись работает с ошибкой (внутрь условия не пускает)
i=1
If "Worksheets(" & Chr(34) & "Настройки" & Chr(34) & ").Chb" & i & ".Value" = True Then

вопрос, можно ли переделать как-то вторую запись, чтобы условие меня внутрь пускало, как и в первом случае?

мне казалось просто, вопрос достаточно узкий.. или все равно лучше выложить файл?
peq вне форума Ответить с цитированием
Старый 23.06.2017, 18:54   #4
peq
Форумчанин
 
Регистрация: 01.03.2009
Сообщений: 230
По умолчанию

файл:
Вложения
Тип файла: 7z file.7z (16.3 Кб, 21 просмотров)
peq вне форума Ответить с цитированием
Старый 23.06.2017, 22:06   #5
pashulka
Форумчанин
 
Регистрация: 03.11.2006
Сообщений: 524
По умолчанию

Вариант(ы) без сборки :

Код:
i = 1
   
If Worksheets("Настройки").Evaluate("Chb" & i).Object.Value = True Then
If Worksheets("Настройки").OLEObjects("Chb" & i).Object.Value = True Then
If Worksheets("Настройки").DrawingObjects("Chb" & i).Object.Value = True Then
If Worksheets("Настройки").Shapes("Chb" & i).DrawingObject.Object.Value = True Then
If Worksheets("Настройки").Shapes("Chb" & i).OLEFormat.Object.Object.Value = True Then
pashulka вне форума Ответить с цитированием
Старый 26.06.2017, 11:18   #6
peq
Форумчанин
 
Регистрация: 01.03.2009
Сообщений: 230
По умолчанию

отличные варианты, спасибо!
peq вне форума Ответить с цитированием
Старый 28.06.2017, 23:24   #7
pashulka
Форумчанин
 
Регистрация: 03.11.2006
Сообщений: 524
По умолчанию

чуть не забыл ещё один вариант

Код:
If Worksheets("Настройки").Pictures("Chb" & i).Object.Value = True Then
pashulka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите в моем коде реализовать поиск минимального и максимального элемента функция minmax SlavikKirov Общие вопросы C/C++ 0 29.10.2015 23:02
Вывести имя компонента в заголовок формы Алексей_2012 Общие вопросы Delphi 10 27.12.2013 02:46
Убрать ошибку #Имя? в полях формы skafiend Microsoft Office Access 1 03.06.2011 07:12
Как присвоить имя столбцу в VBA? Neo007 Microsoft Office Excel 8 22.01.2009 09:46
Передача элемента формы varied Общие вопросы Delphi 10 21.12.2006 23:45