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

Вход

Регистрация

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

 

= Мир MS Excel/Один макрос на много кнопок UserForm - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Один макрос на много кнопок UserForm
ArtiX Дата: Суббота, 19.02.2022, 17:02 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Здравствуйте. Есть много картинок на UserForm, а точней 240, при нажатии на которые происходит однотипное действие. Писать 240 макросов на каждую не хочется) Хочется один универсальный макрос, который будет отслеживать какая картинка нажата. Можно так?
Пример.

[vba]
Код
Private Sub Image1_Click()
Range("V49").Value = 1
End Sub

Private Sub Image2_Click()
Range("V49").Value = 2
End Sub
[/vba]

и т.д.


Сообщение отредактировал ArtiX - Суббота, 19.02.2022, 17:05
 
Ответить
СообщениеЗдравствуйте. Есть много картинок на UserForm, а точней 240, при нажатии на которые происходит однотипное действие. Писать 240 макросов на каждую не хочется) Хочется один универсальный макрос, который будет отслеживать какая картинка нажата. Можно так?
Пример.

[vba]
Код
Private Sub Image1_Click()
Range("V49").Value = 1
End Sub

Private Sub Image2_Click()
Range("V49").Value = 2
End Sub
[/vba]

и т.д.

Автор - ArtiX
Дата добавления - 19.02.2022 в 17:02
Апострофф Дата: Суббота, 19.02.2022, 17:37 | Сообщение № 2
Группа: Проверенные
Ранг: Обитатель
Сообщений: 458
Репутация: 126 ±
Замечаний: 0% ±

Excel 1997
ArtiX, в модуль класса с именем Class1 код
[vba]
Код
Public WithEvents Image As MSForms.Image
Private Sub Image_Click()
[V49] = Mid$(Image.Name, 6)
End Sub
[/vba]
В модуль формы с 240 Image#
[vba]
Код
Private AI() As New Class1
Private Sub UserForm_Initialize()
Dim Contr As MSForms.Control, i As Long
For Each Contr In Me.Controls
    If Left(Contr.Name, 5) = "Image" Then
        ReDim Preserve AI(0 To i)
        Set AI(i).Image = Contr
        i = i + 1
    End If
Next
End Sub
[/vba]
 
Ответить
СообщениеArtiX, в модуль класса с именем Class1 код
[vba]
Код
Public WithEvents Image As MSForms.Image
Private Sub Image_Click()
[V49] = Mid$(Image.Name, 6)
End Sub
[/vba]
В модуль формы с 240 Image#
[vba]
Код
Private AI() As New Class1
Private Sub UserForm_Initialize()
Dim Contr As MSForms.Control, i As Long
For Each Contr In Me.Controls
    If Left(Contr.Name, 5) = "Image" Then
        ReDim Preserve AI(0 To i)
        Set AI(i).Image = Contr
        i = i + 1
    End If
Next
End Sub
[/vba]

Автор - Апострофф
Дата добавления - 19.02.2022 в 17:37
ArtiX Дата: Суббота, 19.02.2022, 18:33 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Апострофф, спасибо)
 
Ответить
СообщениеАпострофф, спасибо)

Автор - ArtiX
Дата добавления - 19.02.2022 в 18:33
  • Страница 1 из 1
  • 1
Поиск:

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