Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBA + Excel Кнопка на листе / 18 сообщений из 18, страница 1 из 1
21.10.2005, 06:53
    #33336403
Аленочка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA + Excel Кнопка на листе
Как можно программно повесить на кнопку макрос? Кнопка находится на обычном экселевском листе...

Аленочка тм
...
Рейтинг: 0 / 0
21.10.2005, 07:09
    #33336412
TIKO
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA + Excel Кнопка на листе
Аленочка

Когда рисуешь кнопку на странице и когда дважды кликуешь на кнопке
открываеся событие клик для этой кнопке
Если у тебя есть готовый макрос в модуле то просто скопируй операторы твоего макроса


Sud Макрос1()

твой код .................

End Sub()

после будет выглядеть так

Private Sub CommandButton1_Click()

твой код .................

End Sub

или так


Private Sub CommandButton1_Click()

Макрос1

End Sub
...
Рейтинг: 0 / 0
21.10.2005, 07:59
    #33336447
Аленочка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA + Excel Кнопка на листе
2 TIKO

Я же говорю программно повесить, а не ручками!!!
Как написать макрос и повесить его на кнопку я знаю. Мне нужен код для создания кнопки и кода кнопки...

Аленочка тм
...
Рейтинг: 0 / 0
21.10.2005, 08:22
    #33336473
VBA + Excel Кнопка на листе
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
    Dim cb As OLEObject
    Dim vbc As VBComponent
    Dim cm As CodeModule
    Dim i As Integer
    
    Set cb = ThisWorkbook.Worksheets("Лист1").OLEObjects.Add( _
      ClassType:="Forms.CommandButton.1", Link:=False, _
      DisplayAsIcon:=False, Left:= 200 , Top:= 40 , _
      Width:= 100 , Height:= 30 )
      
    Set vbc = ThisWorkbook.VBProject.VBComponents("Лист1")
    Set cm = vbc.CodeModule
    
    With cm
        i = .CountOfLines +  1 
        .InsertLines i, "Private Sub " & cb.Name & "_Click()"
        i = i +  1 
        .InsertLines i, _
        "    MsgBox ""Test!"", vbInformation"
        i = i +  1 
        .InsertLines i, "End Sub"
    End With
    
    Set cm = Nothing
    Set vbc = Nothing
...
Рейтинг: 0 / 0
21.10.2005, 12:37
    #33337166
Аленочка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA + Excel Кнопка на листе
Пользователь2
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
    Dim cb As OLEObject
    Dim vbc As VBComponent
    Dim cm As CodeModule
    Dim i As Integer
    
    Set cb = ThisWorkbook.Worksheets("Лист1").OLEObjects.Add( _
      ClassType:="Forms.CommandButton.1", Link:=False, _
      DisplayAsIcon:=False, Left:= 200 , Top:= 40 , _
      Width:= 100 , Height:= 30 )
      
    Set vbc = ThisWorkbook.VBProject.VBComponents("Лист1")
    Set cm = vbc.CodeModule
    
    With cm
        i = .CountOfLines +  1 
        .InsertLines i, "Private Sub " & cb.Name & "_Click()"
        i = i +  1 
        .InsertLines i, _
        "    MsgBox ""Test!"", vbInformation"
        i = i +  1 
        .InsertLines i, "End Sub"
    End With
    
    Set cm = Nothing
    Set vbc = Nothing


Ругнулся на строчку:

Код: plaintext
   Dim vbc As VBComponent
...
Рейтинг: 0 / 0
21.10.2005, 12:47
    #33337223
Аленочка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA + Excel Кнопка на листе
если закоментировать

Код: plaintext
1.
'Dim vbc As VBComponent
 'Dim cm As CodeModule

то создаётся только кнопка, никаких событий при её нажатии не возникает

Аленочка тм
...
Рейтинг: 0 / 0
21.10.2005, 12:52
    #33337247
VBA + Excel Кнопка на листе
Подключи библиотеку. Tools -> References -> Microsoft Visual Basic for Applications Extensibility (см. рисунок).
...
Рейтинг: 0 / 0
21.10.2005, 13:27
    #33337383
Аленочка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA + Excel Кнопка на листе
Какая-то странная ситуация, на листе Лист7 (Лист2) кнопка создаётся, а текст

Код: plaintext
1.
2.
Private Sub CommandButton1_Click()
    MsgBox "Test!", vbInformation
End Sub

появляется на листе Лист2 (Клиенты). Что делать?


Аленочка тм
...
Рейтинг: 0 / 0
21.10.2005, 13:32
    #33337403
Аленочка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA + Excel Кнопка на листе
АленочкаКакая-то странная ситуация, на листе Лист7 (Лист2) кнопка создаётся, а текст

Код: plaintext
1.
2.
Private Sub CommandButton1_Click()
    MsgBox "Test!", vbInformation
End Sub

появляется на листе Лист2 (Клиенты). Что делать?


Аленочка тм

а всё сама разобралась

нужно было писать:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
Sub newbutton()

    Dim cb As OLEObject
    Dim vbc As VBComponent
    Dim cm As CodeModule
    Dim i As Integer
    
    Set cb = ThisWorkbook.Worksheets("Лист2").OLEObjects.Add( _
      ClassType:="Forms.CommandButton.1", Link:=False, _
      DisplayAsIcon:=False, Left:= 200 , Top:= 40 , _
      Width:= 100 , Height:= 30 )
      
    Set vbc = ThisWorkbook.VBProject.VBComponents("Лист7")
    Set cm = vbc.CodeModule
    
    With cm
        i = .CountOfLines +  1 
        .InsertLines i, "Private Sub " & cb.Name & "_Click()"
        i = i +  1 
        .InsertLines i, _
        "    MsgBox ""Test!"", vbInformation"
        i = i +  1 
        .InsertLines i, "End Sub"
    End With
    
    Set cm = Nothing
    Set vbc = Nothing

End Sub


ОГРОМНОЕ СПАСИБО Пользователю2
...
Рейтинг: 0 / 0
21.10.2005, 13:47
    #33337462
Аленочка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA + Excel Кнопка на листе
Теперь ситуация усугубилась тем, что я не знаю как у меня будет называться лист, вернее я знаю, что у меня он будет переименован в номер текущего года, но вот каким он будет по счёту в проекте, вот это вопрос...Как узнать?

Аленочка тм
...
Рейтинг: 0 / 0
21.10.2005, 14:22
    #33337588
VBA + Excel Кнопка на листе
Worksheets("...") указывает на название листа в книге.

VBComponents("...") указывает на имя модуля листа в проекте.

АленочкаТеперь ситуация усугубилась тем, что я не знаю как у меня будет называться лист, вернее я знаю, что у меня он будет переименован в номер текущего года, но вот каким он будет по счёту в проекте, вот это вопрос...Как узнать?
Поясни точнее.
...
Рейтинг: 0 / 0
21.10.2005, 14:40
    #33337645
VBA + Excel Кнопка на листе
Так еще можно, чтобы не путаться.

Код: plaintext
1.
    Set vbc = ThisWorkbook.VBProject.VBComponents _
      (ThisWorkbook.Worksheets("Лист1").CodeName)
...
Рейтинг: 0 / 0
21.10.2005, 15:31
    #33337802
Аленочка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA + Excel Кнопка на листе
Пользователь2Так еще можно, чтобы не путаться.

Код: plaintext
1.
    Set vbc = ThisWorkbook.VBProject.VBComponents _
      (ThisWorkbook.Worksheets("Лист1").CodeName)


спасибо подошло
...
Рейтинг: 0 / 0
21.10.2005, 16:19
    #33337918
Аленочка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA + Excel Кнопка на листе
А как теперь созданной кнопке назначить Caption="Меню"?

Аленочка тм
...
Рейтинг: 0 / 0
24.10.2005, 22:18
    #33341357
VBA + Excel Кнопка на листе
Код: plaintext
1.
2.
3.
4.
5.
    Set cb = ThisWorkbook.Worksheets("Лист1").OLEObjects.Add( _
      ClassType:="Forms.CommandButton.1", Link:=False, _
      DisplayAsIcon:=False, Left:= 200 , Top:= 40 , _
      Width:= 100 , Height:= 30 )
    
    cb.Object.Caption = "Меню"
...
Рейтинг: 0 / 0
25.10.2005, 08:59
    #33341567
Аленочка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA + Excel Кнопка на листе
Аленочка тм

Спасибо!
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
23.06.2008, 06:13
    #35387495
VBA + Excel Кнопка на листе
а нельзя сделать так, чтоб создаваемая программно кнопка имела относительную привязку к конкретной ячейке?
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
23.09.2010, 17:48
    #36863080
LtOldy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA + Excel Кнопка на листе
пользователь 10,
если я правильно понял...
создаваемая кнопка помещается в 1ю ячейку и имеет такие же размеры.
Set cb = ThisWorkbook.Worksheets("SHEET1").OLEObjects.Add( _
ClassType:="Forms.CommandButton.1", Link:=False, _
DisplayAsIcon:=False, Left:=ThisWorkbook.Worksheets("sheet1").Cells( 1,1 ).Left, _
Top:=ThisWorkbook.Worksheets("sheet1").Cells( 1,1 ).Top,_
Width:=ThisWorkbook.Worksheets("sheet1").Cells( 1,1 ).Width,_
Height:=ThisWorkbook.Worksheets("sheet1").Cells( 1,1 ).Height)
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBA + Excel Кнопка на листе / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]