Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Создание кнопки на рабочем листе

6.2K
17 января 2006 года
iq13
28 / / 03.12.2005
Господа, а как создать на рабочем листе кнопку и присвоить ей какой-то код?? Кнопку создавать не вручную, а кодом.
405
17 января 2006 года
Dmitrii
554 / / 16.12.2004
Цитата:
Originally posted by iq13
Господа, а как создать на рабочем листе кнопку и присвоить ей какой-то код?? Кнопку создавать не вручную, а кодом.


Вот пример:

 
Код:
Sub AddBtnOnWSh()
Dim newBtn As Object
Set newBtn = Worksheets("Лист2").Buttons.Add(138, 19.5, 58.5, 22.5)
newBtn.OnAction = "WShExist"
End Sub
275
17 января 2006 года
pashulka
985 / / 19.09.2004
iq13, Вообще-то в MS Excel существует несколько несколько кнопок :
- меню Вид - Панели инструментов - Формы - Кнопка
- меню Вид - Панели инструментов - Элементы управления - Кнопка
6.2K
24 января 2006 года
iq13
28 / / 03.12.2005
Цитата:
Originally posted by pashulka
iq13, Вообще-то в MS Excel существует несколько несколько кнопок :
- меню Вид - Панели инструментов - Формы - Кнопка
- меню Вид - Панели инструментов - Элементы управления - Кнопка


Читай внимательно: не в ручную, а кодом!!

275
24 января 2006 года
pashulka
985 / / 19.09.2004
Я читаю очень внимательно, а вот Вы похоже не поняли, что не важно, как создавать кнопку, важно какую именно кнопку необходимо создать, а именно этого в Вашем вопросе и не было.
405
24 января 2006 года
Dmitrii
554 / / 16.12.2004
Для iq13:
pashulka делает весьма резонное замечание.
Приведу ещё один пример создания кнопки на листе:
Код:
Sub AddOLEObjOnWsh()
Dim xBtn As OLEObject
Set xBtn = Worksheets(1).OLEObjects.Add(ClassType:="Forms.CommandButton.1", _
        DisplayAsIcon:=False, _
        Left:=85, Top:=22, Width:=100, Height:=20)
If Not xBtn Is Nothing Then
    xBtn.Object.Caption = "Пуск"
Else
    MsgBox "Невозможно создать кнопку."
End If
End Sub
В этом случае в модуле кода того листа, на котором создаётся кнопка, уже должен быть размещён код отклика создаваемого "контрола" на нужное событие (например, [COLOR=blue]Click[/COLOR]).
В принципе, текст кода можно поместить в модуль кода и программно, но, на мой взгляд, это лишние хлопоты. Поэтому без крайней необходимости я указанным способом не пользуюсь.
275
24 января 2006 года
pashulka
985 / / 19.09.2004
И вот ещё два примера программного создания кнопки (Forms & ActiveX) :
Код:
With Worksheets(1)
     If Not .ProtectDrawingObjects Then
        With .Shapes.AddFormControl( _
             Type:=xlButtonControl, Left:=50, _
             Top:=50, Width:=75, Height:=25)
             .DrawingObject.Caption = "Моя_Кнопка"
             .OnAction = "Мой_Макрос"
        End With
     Else
        MsgBox "Создание кнопки невозможно", , _
               "Ошибка пользователя !!!"
     End If
End With

Код:
With Worksheets(1)
     If Not .ProtectDrawingObjects Then
        With .Shapes.AddOLEObject( _
             ClassType:="Forms.CommandButton.1", _
             Left:=50, Top:=50, Width:=75, Height:=25)
             .DrawingObject.Object.Caption = "Моя_Кнопка"
        End With
     Else
        MsgBox "Создание кнопки невозможно", , _
               "Ошибка пользователя !!!"
     End If
End With
6.2K
26 января 2006 года
iq13
28 / / 03.12.2005
Да, прошу прошения, просто невнимательно прочитал. Уставший был.
Так вот мне нужно, чтобы кнопка вставлялась именно на поле рабочего листа, а не в панель инструментов. Спасибо.
405
26 января 2006 года
Dmitrii
554 / / 16.12.2004
Цитата:
Originally posted by iq13
Да, прошу прошения, просто невнимательно прочитал. Уставший был.
Так вот мне нужно, чтобы кнопка вставлялась именно на поле рабочего листа, а не в панель инструментов. Спасибо.


Вы можете использовать любой из приведённых примеров. Во всех случаях кнопка будет создана именно на рабочем листе.
Разница здесь в том, что пара первых примеров, приведённых pashulka и мной, аналогична тому, как если бы Вы создавали кнопку вручную с помощью панели инструментов Формы, а пара вторых примеров - с помощью панели инструментов Элементы управления.
Как следствие, в первом случае код назначенного кнопке макроса может находиться в любом стандартном модуле кода или модуле кода любого рабочего листа, во втором - код отклика кнопки на событие [COLOR=blue]Click[/COLOR] может находиться только в модуле кода того рабочего листа, на который установлена кнопка.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог