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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.07.2014, 11:52   #1
MaxxVer
Форумчанин
 
Регистрация: 17.03.2009
Сообщений: 226
По умолчанию Одна процедура для нескольких кнопок

Добрый день!
У меня на форме 30 кнопок, при нажатии на одну из 29 (For i = 2 To 30) должна вызываться одна и та же процедура. Больше часа гуглю, но не могу найти то что надо.. Подскажите пожалуйста алгоритм.
MaxxVer вне форума Ответить с цитированием
Старый 15.07.2014, 11:54   #2
MaxxVer
Форумчанин
 
Регистрация: 17.03.2009
Сообщений: 226
По умолчанию

Названия по порядку, т.е. можно использовать Controls("Button" & i)
MaxxVer вне форума Ответить с цитированием
Старый 15.07.2014, 12:11   #3
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Не понимаю... Ну и вызывайте одну процедуру, какие проблемы? За час можно больше сотни кнопок копипастом обработать. Или класс написать, если умеете.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 15.07.2014, 12:37   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

а зачем нужны 30 кнопок вызывающих одну процедуру???
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 15.07.2014, 13:00   #5
MaxxVer
Форумчанин
 
Регистрация: 17.03.2009
Сообщений: 226
По умолчанию

Классы писать не умею( Могу написать для каждой кнопки отдельно (Private Sub CommandButton1_Click()), но не хочу плодить кучу текста одинакового. А понять как в одной процедуре обратиться ко всем кнопкам (Click) через цикл не могу... Нужно 30 потому что напротив каждой есть текстбокс куда вставляется путь файла выбранного посредством нажатия на кнопку. Т.е. одинаковая процедура - это выбор файла (GetFilePath).
Как раз копипастить не хочу, надо же совершенствоваться в ВБА
Точнее функция (GetFilePath)

Последний раз редактировалось MaxxVer; 15.07.2014 в 13:02.
MaxxVer вне форума Ответить с цитированием
Старый 15.07.2014, 13:01   #6
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Я предполагаю что ненужные прячутся
Или может каждая на своей вкладке...

P.S. Не угадал...
Пишите класс - примеры были. Я их тоже не умею, но тут думаю оптимально класс, если не хотите копипастить 30 раз.
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 15.07.2014 в 13:04.
Hugo121 вне форума Ответить с цитированием
Старый 15.07.2014, 13:07   #7
MaxxVer
Форумчанин
 
Регистрация: 17.03.2009
Сообщений: 226
По умолчанию

Ок. Буду изучать классы тогда.
MaxxVer вне форума Ответить с цитированием
Старый 15.07.2014, 13:08   #8
MaxxVer
Форумчанин
 
Регистрация: 17.03.2009
Сообщений: 226
По умолчанию

Если в лоб то так пытался сделать:
Код:
Dim i, wb As Workbook, Iten As Byte, Sht As Sheets
    Select Case Controls()
    For i = 2 To 30
    Case "Button" & i + 100
        On Error GoTo ErrorHandler
            Set wb = Workbooks.Open(GetFilePath(, "W:\new\Департамент инвестиций\Общая\=АРХИВ=\ИПР", , "*"), AddToMRU:=False, UpdateLinks:=False)
            Controls("TextBox" & i + 300).value = ActiveWorkbook.FullName
        ReDim Arr(1 To ActiveWorkbook.Worksheets.Count)
        For Each Sht In ActiveWorkbook.Worksheets
            If Sht.Visible = xlSheetVisible Then
            Item = Item + 1
            Arr(Item) = Sht.Name
                Controls("Combobox" & i).AddItem (Sht.Name)
            End If
        Next
    End Select
Next
ErrorHandler:
MaxxVer вне форума Ответить с цитированием
Старый 15.07.2014, 13:12   #9
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

описанная ситуация вызывает (лично у меня) только недоумение. в Вашем файле что-то не так со структурой данных и логикой управляющих элементов (скорее всего)

Цитата:
Как раз копипастить не хочу
набирайте все вручную - заодно усовершенствуете технику набора текста
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 15.07.2014, 13:13   #10
MaxxVer
Форумчанин
 
Регистрация: 17.03.2009
Сообщений: 226
По умолчанию

Возможно, я же только учусь..))
MaxxVer вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
разные классы, одна процедура xrob Компоненты Delphi 9 17.05.2011 19:42
Одна процедура вместо трёх. Wild_klas Помощь студентам 10 01.11.2010 22:30
Одна оконная процедура TGrey[WoLf] Win Api 6 22.06.2010 00:30
Одна процедура для всех Edit(ов) SoftKoc Общие вопросы Delphi 7 23.01.2010 13:44
Одна функция для нескольких объектов Salomon Помощь студентам 2 25.11.2008 16:32