Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Обработка нескольких кнопок (CommadButton) одной процедурой - Мир MS Excel

Старая форма входа
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Обработка нескольких кнопок (CommadButton) одной процедурой (Макросы Sub)
Обработка нескольких кнопок (CommadButton) одной процедурой
Игорь Дата: Четверг, 02.01.2014, 23:51 | Сообщение № 1
Группа: Гости
Здравствуйте!
Помогите пожалуйста обработать одной процедурой 20 кнопок

Короче, есть форма на которой 28 кнопок, необходимо циклом, перебирая все кнопки поменять свойство Caption/ Например кнопке с Name- CommandButton28.Caption = "Название28", кнопке с Name- CommandButton29.Caption = "Название29" и т.д всем кнопкам. Процедура см. ниже - у меня не работает, Вариантов в голове нет, все форумы пересмотрел:

[vba]
Код
Public Sub VyborGruppy()
For i = 28 To 43
cmb = CommandButton & i
cmb.Caption = "Название" & i
Next i
End Sub
[/vba]
 
Ответить
СообщениеЗдравствуйте!
Помогите пожалуйста обработать одной процедурой 20 кнопок

Короче, есть форма на которой 28 кнопок, необходимо циклом, перебирая все кнопки поменять свойство Caption/ Например кнопке с Name- CommandButton28.Caption = "Название28", кнопке с Name- CommandButton29.Caption = "Название29" и т.д всем кнопкам. Процедура см. ниже - у меня не работает, Вариантов в голове нет, все форумы пересмотрел:

[vba]
Код
Public Sub VyborGruppy()
For i = 28 To 43
cmb = CommandButton & i
cmb.Caption = "Название" & i
Next i
End Sub
[/vba]

Автор - Игорь
Дата добавления - 02.01.2014 в 23:51
wild_pig Дата: Пятница, 03.01.2014, 00:26 | Сообщение № 2
Группа: Проверенные
Ранг: Обитатель
Сообщений: 517
Репутация: 97 ±
Замечаний: 0% ±

2003, 2013
Вечер добрый!
[vba]
Код
For i = 28 To 43
UserForm1.Controls("CommandButton" & i).Caption = "Название" & i
Next
[/vba]
 
Ответить
СообщениеВечер добрый!
[vba]
Код
For i = 28 To 43
UserForm1.Controls("CommandButton" & i).Caption = "Название" & i
Next
[/vba]

Автор - wild_pig
Дата добавления - 03.01.2014 в 00:26
Hugo Дата: Пятница, 03.01.2014, 00:27 | Сообщение № 3
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3252
Репутация: 707 ±
Замечаний: 0% ±

2019
И где та форма?
Хотя может так подойдёт:
[vba]
Код
Public Sub VyborGruppy()
      Dim btn As Object, t&
      For Each btn In Me.Controls
          If btn.Name Like "CommandButton*" Then
              t = Replace(btn.Name, "CommandButton", "")
              Select Case t
                  Case 28 To 43: btn.Caption = "Название" & t
              End Select
          End If
      Next
End Sub
[/vba]

Но у wild_pig конечно проще :)


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеИ где та форма?
Хотя может так подойдёт:
[vba]
Код
Public Sub VyborGruppy()
      Dim btn As Object, t&
      For Each btn In Me.Controls
          If btn.Name Like "CommandButton*" Then
              t = Replace(btn.Name, "CommandButton", "")
              Select Case t
                  Case 28 To 43: btn.Caption = "Название" & t
              End Select
          End If
      Next
End Sub
[/vba]

Но у wild_pig конечно проще :)

Автор - Hugo
Дата добавления - 03.01.2014 в 00:27
Игорь Дата: Пятница, 03.01.2014, 00:32 | Сообщение № 4
Группа: Гости
Большое спасибо, все работает.
 
Ответить
СообщениеБольшое спасибо, все работает.

Автор - Игорь
Дата добавления - 03.01.2014 в 00:32
Игорь Дата: Пятница, 03.01.2014, 15:58 | Сообщение № 5
Группа: Гости
Всем спасибо за ответы, Но теперь выплыл новый вопрос.
Как из этих 28 кнопок узнать какая была нажата? Все эти кнопки имеют Name от CommandButtom28 до CommandButtom42 и объединены одной рамкой (Frame). Т.е. в зависимости от нажатой кнопки выводится другой экран со следующим набором для выбора.
Спасибо за оперативное решение.
 
Ответить
СообщениеВсем спасибо за ответы, Но теперь выплыл новый вопрос.
Как из этих 28 кнопок узнать какая была нажата? Все эти кнопки имеют Name от CommandButtom28 до CommandButtom42 и объединены одной рамкой (Frame). Т.е. в зависимости от нажатой кнопки выводится другой экран со следующим набором для выбора.
Спасибо за оперативное решение.

Автор - Игорь
Дата добавления - 03.01.2014 в 15:58
.......... Дата: Пятница, 03.01.2014, 16:47 | Сообщение № 6
Группа: Гости
Все кнопки имеют
1. Свойство TabIndex.
2. Свойство Tag.
3. Свойство Name.
4. Свойство Caption.
И любое можно использовать для разрешения задачи.
 
Ответить
СообщениеВсе кнопки имеют
1. Свойство TabIndex.
2. Свойство Tag.
3. Свойство Name.
4. Свойство Caption.
И любое можно использовать для разрешения задачи.

Автор - ..........
Дата добавления - 03.01.2014 в 16:47
Игорь Дата: Пятница, 03.01.2014, 17:12 | Сообщение № 7
Группа: Гости
Имеют, но как определить какая кнопка нажата, писать процедуру Click для каждой кнопки - можно, но глупо.
Нужен универсальный обработчик нажатия кнопок из диапазона от commandbutton28 до commandbutton42
 
Ответить
СообщениеИмеют, но как определить какая кнопка нажата, писать процедуру Click для каждой кнопки - можно, но глупо.
Нужен универсальный обработчик нажатия кнопок из диапазона от commandbutton28 до commandbutton42

Автор - Игорь
Дата добавления - 03.01.2014 в 17:12
аопавоапв Дата: Пятница, 03.01.2014, 17:19 | Сообщение № 8
Группа: Гости
>> для каждой кнопки - можно, но глупо <<
Пишите класс. :D
 
Ответить
Сообщение>> для каждой кнопки - можно, но глупо <<
Пишите класс. :D

Автор - аопавоапв
Дата добавления - 03.01.2014 в 17:19
Игорь Дата: Пятница, 03.01.2014, 17:32 | Сообщение № 9
Группа: Гости
Ну согласитесь писать обработку пятидесяти кнопок процедурами:

Private Sub CommandButton43_Click()
strGruppa = CommandButton43.Caption
End Sub

как-то, мягко сказать - неправильно и непрофессионально....
 
Ответить
СообщениеНу согласитесь писать обработку пятидесяти кнопок процедурами:

Private Sub CommandButton43_Click()
strGruppa = CommandButton43.Caption
End Sub

как-то, мягко сказать - неправильно и непрофессионально....

Автор - Игорь
Дата добавления - 03.01.2014 в 17:32
KuklP Дата: Пятница, 03.01.2014, 17:41 | Сообщение № 10
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Так Вам и советуют:
Цитата аопавоапв, 03.01.2014 в 17:19, в сообщении № 8
Пишите класс.


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728


Сообщение отредактировал KuklP - Пятница, 03.01.2014, 17:41
 
Ответить
СообщениеТак Вам и советуют:
Цитата аопавоапв, 03.01.2014 в 17:19, в сообщении № 8
Пишите класс.

Автор - KuklP
Дата добавления - 03.01.2014 в 17:41
ожлоржлор Дата: Пятница, 03.01.2014, 17:42 | Сообщение № 11
Группа: Гости
Не соглашусь.
Правильный ответ - "Вы думаете, это я все это руками писал?"
 
Ответить
СообщениеНе соглашусь.
Правильный ответ - "Вы думаете, это я все это руками писал?"

Автор - ожлоржлор
Дата добавления - 03.01.2014 в 17:42
Игорь Дата: Пятница, 03.01.2014, 17:44 | Сообщение № 12
Группа: Гости
Не ужели, Вы не понимаете что я прошу???
 
Ответить
СообщениеНе ужели, Вы не понимаете что я прошу???

Автор - Игорь
Дата добавления - 03.01.2014 в 17:44
KuklP Дата: Пятница, 03.01.2014, 17:50 | Сообщение № 13
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Игорь, во-первых - "неужели" пишется так. Во-вторых, Вы попробовали то, что Вам предложили? В-третьих - знаете, очень неприятно общаться на форуме с анонимами. Не тяжело же зарегистрироваться! Минута дела.


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеИгорь, во-первых - "неужели" пишется так. Во-вторых, Вы попробовали то, что Вам предложили? В-третьих - знаете, очень неприятно общаться на форуме с анонимами. Не тяжело же зарегистрироваться! Минута дела.

Автор - KuklP
Дата добавления - 03.01.2014 в 17:50
кеууке Дата: Пятница, 03.01.2014, 17:52 | Сообщение № 14
Группа: Гости
>>Не ужели, Вы не понимаете что я прошу<<
Класс написать. :D
 
Ответить
Сообщение>>Не ужели, Вы не понимаете что я прошу<<
Класс написать. :D

Автор - кеууке
Дата добавления - 03.01.2014 в 17:52
IgorShuldybin Дата: Пятница, 03.01.2014, 17:55 | Сообщение № 15
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Я правильно отреагировал на замечание и зарегистрировался, но что такое "класс написать " - я не понимаю.
С уважением ...
 
Ответить
СообщениеЯ правильно отреагировал на замечание и зарегистрировался, но что такое "класс написать " - я не понимаю.
С уважением ...

Автор - IgorShuldybin
Дата добавления - 03.01.2014 в 17:55
wqeqwer Дата: Пятница, 03.01.2014, 17:59 | Сообщение № 16
Группа: Гости
>>я не понимаю<<
И не парьтесь.
В Excel существует масса способоб быстор прописать 100 процедур
[vba][code]Private Sub CommandButton43_Click()
strGruppa = CommandButton43.Caption
End Sub [/code][/vba]
 
Ответить
Сообщение>>я не понимаю<<
И не парьтесь.
В Excel существует масса способоб быстор прописать 100 процедур
[vba][code]Private Sub CommandButton43_Click()
strGruppa = CommandButton43.Caption
End Sub [/code][/vba]

Автор - wqeqwer
Дата добавления - 03.01.2014 в 17:59
KuklP Дата: Пятница, 03.01.2014, 18:03 | Сообщение № 17
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Вот. А когда регистрировались, Правила читали? Что там насчет примера пишут?
В честь НГ Выложу пример для кнопок. Разбирайтесь.
К сообщению приложен файл: Class.xls (58.5 Kb)


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеВот. А когда регистрировались, Правила читали? Что там насчет примера пишут?
В честь НГ Выложу пример для кнопок. Разбирайтесь.

Автор - KuklP
Дата добавления - 03.01.2014 в 18:03
www Дата: Пятница, 03.01.2014, 18:09 | Сообщение № 18
Группа: Гости
Благодетель! :D
Мог бы и попроще найти.
 
Ответить
СообщениеБлагодетель! :D
Мог бы и попроще найти.

Автор - www
Дата добавления - 03.01.2014 в 18:09
Hugo Дата: Пятница, 03.01.2014, 18:11 | Сообщение № 19
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3252
Репутация: 707 ±
Замечаний: 0% ±

2019
Простейший - в любую ячейку, начиная с 43-й строки пишем формулу:

Код
="Private Sub CommandButton" & ROW() & "_Click():strGruppa = CommandButton" & ROW() & ".Caption:End Sub"


и тянем вниз сколько нужно.
Результат копируем в VBE.


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеПростейший - в любую ячейку, начиная с 43-й строки пишем формулу:

Код
="Private Sub CommandButton" & ROW() & "_Click():strGruppa = CommandButton" & ROW() & ".Caption:End Sub"


и тянем вниз сколько нужно.
Результат копируем в VBE.

Автор - Hugo
Дата добавления - 03.01.2014 в 18:11
IgorShuldybin Дата: Пятница, 03.01.2014, 18:20 | Сообщение № 20
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
KuklP, Спасибо. Есть ссылка где можно про Class() почитать, не пойму как работает и в какой последовательности. И еще если не затруднит как из приложенной Вами программы получить название нажатой кнопки, убрав в коменты все лишнее.
 
Ответить
СообщениеKuklP, Спасибо. Есть ссылка где можно про Class() почитать, не пойму как работает и в какой последовательности. И еще если не затруднит как из приложенной Вами программы получить название нажатой кнопки, убрав в коменты все лишнее.

Автор - IgorShuldybin
Дата добавления - 03.01.2014 в 18:20
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Обработка нескольких кнопок (CommadButton) одной процедурой (Макросы Sub)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!