Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как поймать нажатие на кнопку, программно созданную на форме
|
|||
|---|---|---|---|
|
#18+
Идея заключается в следующем. Хочу чтобы при нажатии на кнопку появлялась форма с рабочими листами в Екселе. Причем на форме появлялись CommandButton (по кол-ву листов), с названиями листов. Нажимаешь на кнопку - попадаешь на нужный тебе лист. Вопрос следующий: 1. Есть форма, пустая 2. Запускаю макрос, он счиатет кол-во листов, записывает их названия в массив. 3. Запускает форму, добавляет на нее нужно кол-во кнопок, приваивает им названия листов. 4. Проблема: что дальше. Как поймать событие, что юзер нажал на какую-то кнопку? У меня в свое время была похожая задача, но там были CheckBox'ы и я проверял их значение на True, а как быть с кнопками? Помогите, плиз, если можно кодом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2004, 12:50 |
|
||
|
Как поймать нажатие на кнопку, программно созданную на форме
|
|||
|---|---|---|---|
|
#18+
Private Sub yourButtonName_Click() code....... End sub ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2004, 13:00 |
|
||
|
Как поймать нажатие на кнопку, программно созданную на форме
|
|||
|---|---|---|---|
|
#18+
Пояснение, кнопок может создаться очень много и всякий раз разное кол-во. На каждую я процедуру не напишу... Соответсвенно имени я их не знаю... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2004, 13:28 |
|
||
|
Как поймать нажатие на кнопку, программно созданную на форме
|
|||
|---|---|---|---|
|
#18+
Не знаю как в VB но в Delphi можно так: procedure TForm1.AllButtonsClick(Sender: TObject); begin // процедура для всех твоих кнопок end; procedure TForm1.Button1Click(Sender: TObject); var b:TButton; begin // Создаем кнопку b:=TButton.Create(self); b.Name := 'MyButton87897'; b.Parent := Self; // Привязываем событие b.OnClick := AllButtonsClick; end; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2004, 13:32 |
|
||
|
Как поймать нажатие на кнопку, программно созданную на форме
|
|||
|---|---|---|---|
|
#18+
Не знаю как вы "програмно" создаете кнопки. Но есть такой способ: ставим на форму кнопку называем ее button ставим index 0 тогда програмно создать еще кнопку можно коммандой Код: plaintext 1. далее пишем обработчик события Код: plaintext 1. 2. 3. 4. 5. 6. и тд и тп. если напишете код как создаете кнопки постараюсь помочь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2004, 14:41 |
|
||
|
Как поймать нажатие на кнопку, программно созданную на форме
|
|||
|---|---|---|---|
|
#18+
Sub CreateForm() Application.ScreenUpdating = False Dim MyArray() As String With ActiveWorkbook SheetsQty = ActiveWorkbook.Worksheets.Count ' Кол-во листов в книге ReDim MyArray(SheetsQty) ' Определяем размер массива For i = 1 To SheetsQty ActiveWorkbook.Worksheets.Item(i).Select N = ActiveWorkbook.Worksheets.Item(i).Name MyArray(i) = N 'заносим данные в массив Next i t = 5 ' определям верхнюю границу будущей первой кнопки For i = 1 To SheetsQty ' цикл равный кол-ву листов в книге Set Mycmd = Controls.Add("Forms.CommandButton.1", , Visible) 'создание кнопки Mycmd.Left = 5 Mycmd.Top = t Mycmd.Width = 80 Mycmd.Height = 20 Mycmd.Caption = MyArray (i) ' можно поставить Mycmd.Name тогда названия ' кнопок будут CommandButton1, CommandButton2, ... t = t + 25 ' отступ для след. кнопки Next i h = i * 25 + 10 ' определяется высота формы If h > 200 Then ' если высота слишком большая, тогда включаем скроллинг With FrmLists .Height = 200 .Width = 115 .ScrollBars = fmScrollBarsVertical .ScrollHeight = h - 25 .Left = 10 .Top = 200 End With Else FrmLists.Height = h End If End With Application.ScreenUpdating = True End Sub Best Regards ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2004, 14:50 |
|
||
|
Как поймать нажатие на кнопку, программно созданную на форме
|
|||
|---|---|---|---|
|
#18+
Хм. Так это в VBA происходит или нет? У контролов, созданных с помощью Add события отловить нельзя (в VB можно), а массивов контролов VBA не поддерживает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2004, 15:13 |
|
||
|
Как поймать нажатие на кнопку, программно созданную на форме
|
|||
|---|---|---|---|
|
#18+
to Antonariy: это точно, про события. Я просто не в курсе, поэтому и использовал этот метод. Но если действительно события отловить нельзя (это VBA), то блин я зря запостил этот топик. Best Regards ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2004, 15:15 |
|
||
|
Как поймать нажатие на кнопку, программно созданную на форме
|
|||
|---|---|---|---|
|
#18+
Да блин!! Сочувствую. Придется, наверное, заполнять Листбокс или комбобокс именами листов и подсовывать их значение (выбранное) как параметр стандартной функции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2004, 16:12 |
|
||
|
Как поймать нажатие на кнопку, программно созданную на форме
|
|||
|---|---|---|---|
|
#18+
Конец топика :-( Сделал ComboBox, работает. Наверное даже удобнее, т.к. места меньше на экране занимает. Спасибо всем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2004, 16:40 |
|
||
|
Как поймать нажатие на кнопку, программно созданную на форме
|
|||
|---|---|---|---|
|
#18+
Есть один способ. Устанавливаешь на всю форму процедуру перехвата нажатия на левую кнопку мыши. В ней определяешь имя активного в данный момент объекта и исходя из этого выполняешь какие-либо действия. Пример: Код: plaintext 1. 2. 3. 4. В переменной ctrlName содержится имя оюъекта формы, в данный момент имеющего фокус ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2004, 12:25 |
|
||
|
|

start [/forum/topic.php?fid=60&msg=32386036&tid=2170156]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
54ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
| others: | 221ms |
| total: | 377ms |

| 0 / 0 |
