Sub AddBtnOnWSh()
Dim newBtn As Object
Set newBtn = Worksheets("Лист2").Buttons.Add(138, 19.5, 58.5, 22.5)
newBtn.OnAction = "WShExist"
End Sub
Создание кнопки на рабочем листе
Господа, а как создать на рабочем листе кнопку и присвоить ей какой-то код?? Кнопку создавать не вручную, а кодом.
Цитата:
Originally posted by iq13
Господа, а как создать на рабочем листе кнопку и присвоить ей какой-то код?? Кнопку создавать не вручную, а кодом.
Господа, а как создать на рабочем листе кнопку и присвоить ей какой-то код?? Кнопку создавать не вручную, а кодом.
Вот пример:
Код:
- меню Вид - Панели инструментов - Формы - Кнопка
- меню Вид - Панели инструментов - Элементы управления - Кнопка
Цитата:
Originally posted by pashulka
iq13, Вообще-то в MS Excel существует несколько несколько кнопок :
- меню Вид - Панели инструментов - Формы - Кнопка
- меню Вид - Панели инструментов - Элементы управления - Кнопка
iq13, Вообще-то в MS Excel существует несколько несколько кнопок :
- меню Вид - Панели инструментов - Формы - Кнопка
- меню Вид - Панели инструментов - Элементы управления - Кнопка
Читай внимательно: не в ручную, а кодом!!
Я читаю очень внимательно, а вот Вы похоже не поняли, что не важно, как создавать кнопку, важно какую именно кнопку необходимо создать, а именно этого в Вашем вопросе и не было.
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
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
В принципе, текст кода можно поместить в модуль кода и программно, но, на мой взгляд, это лишние хлопоты. Поэтому без крайней необходимости я указанным способом не пользуюсь.
Код:
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
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
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
Так вот мне нужно, чтобы кнопка вставлялась именно на поле рабочего листа, а не в панель инструментов. Спасибо.
Цитата:
Originally posted by iq13
Да, прошу прошения, просто невнимательно прочитал. Уставший был.
Так вот мне нужно, чтобы кнопка вставлялась именно на поле рабочего листа, а не в панель инструментов. Спасибо.
Да, прошу прошения, просто невнимательно прочитал. Уставший был.
Так вот мне нужно, чтобы кнопка вставлялась именно на поле рабочего листа, а не в панель инструментов. Спасибо.
Вы можете использовать любой из приведённых примеров. Во всех случаях кнопка будет создана именно на рабочем листе.
Разница здесь в том, что пара первых примеров, приведённых pashulka и мной, аналогична тому, как если бы Вы создавали кнопку вручную с помощью панели инструментов Формы, а пара вторых примеров - с помощью панели инструментов Элементы управления.
Как следствие, в первом случае код назначенного кнопке макроса может находиться в любом стандартном модуле кода или модуле кода любого рабочего листа, во втором - код отклика кнопки на событие [COLOR=blue]Click[/COLOR] может находиться только в модуле кода того рабочего листа, на который установлена кнопка.