Привет всем! Прошу помощи со следующим вопросом. На лист копирую кнопку ActiveX с другого листа в цикле. Необходимо при этом чтобы у всех скопированных кнопок было событие по нажатию. Не могу найти ничего похожего. Может быть это сделать каким-нибудь другим способом. Помогите пожалуйста!
[vba]
Код
Sub AddPlus() ' Добавляем кнопку "Добавить задачу" в таблицу For j = 2 To 10 Step 2 For i = 5 To 30 If IsEmpty(Sheets("Задачи").Cells(i, j).Value) Then Sheets("Ресурсы").Select ActiveSheet.Shapes.Range(Array("CommandButton1")).Select Selection.Copy Sheets("Задачи").Select ActiveSheet.Cells(i, j).Select Sheets("Задачи").Paste Exit For End If Next i Next j
For Each ob In Sheets("Задачи").OLEObjects If ob.Name Like "CommandButton*" Then ' Здесь нужно добавить код для события End If Next
End Sub
[/vba]
Привет всем! Прошу помощи со следующим вопросом. На лист копирую кнопку ActiveX с другого листа в цикле. Необходимо при этом чтобы у всех скопированных кнопок было событие по нажатию. Не могу найти ничего похожего. Может быть это сделать каким-нибудь другим способом. Помогите пожалуйста!
[vba]
Код
Sub AddPlus() ' Добавляем кнопку "Добавить задачу" в таблицу For j = 2 To 10 Step 2 For i = 5 To 30 If IsEmpty(Sheets("Задачи").Cells(i, j).Value) Then Sheets("Ресурсы").Select ActiveSheet.Shapes.Range(Array("CommandButton1")).Select Selection.Copy Sheets("Задачи").Select ActiveSheet.Cells(i, j).Select Sheets("Задачи").Paste Exit For End If Next i Next j
For Each ob In Sheets("Задачи").OLEObjects If ob.Name Like "CommandButton*" Then ' Здесь нужно добавить код для события End If Next
Доброе время суток. Вы используете MSForms.CommandButton - с ними не так всё просто. почитайте. Лучше используете так называемые кнопки элементов управления формы, для них можно назначить обработчик события, используя свойство OnAction такой кнопки.
Доброе время суток. Вы используете MSForms.CommandButton - с ними не так всё просто. почитайте. Лучше используете так называемые кнопки элементов управления формы, для них можно назначить обработчик события, используя свойство OnAction такой кнопки.anvg
Недавно была аналогичная задача, могу сказать, что добавить обработчик это не самое сложное, просто создаем класс в котором объявляем переменную-член с ключевым словом WithEvents и при создании объекта класса передаем ссылку на наш элемент. Но, есть один момент, не знаю по какой причине, когда происходит работа с ActiveX контролами программно, глобальные переменные очищаются, поэтому могут быть сюрпризы. К примеру, у меня по нажатию на кнопку, открывалась форма, а после этого обработчики просто очищались и кнопка больше не срабатывала. Нигде не смог найти инфы, почему так происходит. Я решил эту проблему пересозданием объектов классов-обработчиков после закрытия формы.
Если не критично использование ActiveX, то лучше последуйте совету anvg
Здравствуйте.
Недавно была аналогичная задача, могу сказать, что добавить обработчик это не самое сложное, просто создаем класс в котором объявляем переменную-член с ключевым словом WithEvents и при создании объекта класса передаем ссылку на наш элемент. Но, есть один момент, не знаю по какой причине, когда происходит работа с ActiveX контролами программно, глобальные переменные очищаются, поэтому могут быть сюрпризы. К примеру, у меня по нажатию на кнопку, открывалась форма, а после этого обработчики просто очищались и кнопка больше не срабатывала. Нигде не смог найти инфы, почему так происходит. Я решил эту проблему пересозданием объектов классов-обработчиков после закрытия формы.
Если не критично использование ActiveX, то лучше последуйте совету anvgastatsa
Сообщение отредактировал astatsa - Вторник, 05.12.2017, 15:29