В общем у меня в заявке есть три кнопки одна отправляет заявку на согласование после ее нажатия она исчезает и должна появиться вторая кнопка, она тоже выполняет определенные функции и сохраняет заявку в нужную папку отправляя ее письмом для исполнителя перед этим скрывается эта кнопка и появляется третья исполнено. если я сделаю на открытие книги сокрытие второй и третьей кнопок то они будут снова исчезать когда следующий пользователь будет открывать книгу. Есть идеи как это сделать? Можно вероятно создавать следующую кнопку и привязывать макрос на неё после нажатия предыдущей? подскажите основные команды как создать кнопку, задать размеры в см и как ее разместить в нужные координаты или привязать к ячейке, задать надпись и шрифт с размерами, А так же привязать макрос, ну или посоветуйте какую нибудь статейку на эту тему
Мастерство программиста не в том, чтобы писать программы, работающие без ошибок. А в том, чтобы писать программы, работающие при любом количестве ошибок.
Для простого действия написать непростой код. Откажитесь от этой затратной идеи. Например, можно создать небольшую немодальную форму с тремя кнопками, которая будет висеть, например, в левом верхнем углу экрана. Нажатие кнопок можно блокировать программно.
Еще вариант: одна кнопка, на которой меняется надпись , функционал кнопки зависит от надписи
Семен Фадеев, сделайте ОДНУ кнопку (я делаю фигуру и вешаю макрос на неё) и двигайте её, красьте и называйте по-разному На кнопку повесьте 1 макрос, который идёт 3мя путями (или вызывает 3 макроса) - в зависимости от ситуации
Option Explicit
Option Private Module
'====================================================================================================
Sub UniShape()
Dim shp As Shape
Set shp = ActiveSheet.Shapes(1) ' если фигура на АКТИВНОМ листе ОДНА
If shp.TextFrame2.TextRange.Characters.Text = "Step ONE" Then ' стоит ONE, значит запускаем этап 1 и так по аналогии …
shp.TextFrame2.TextRange.Characters.Text = "Step TWO" ' переименовываем фигуру для второго этапа и так по аналогии …
shp.IncrementLeft 100 ' двигаем ВПРАВО
shp.Fill.ForeColor.RGB = vbYellow ' цвет ФИГУРЫ
shp.TextFrame2.TextRange.Font.Fill.ForeColor.RGB = vbBlack ' цвет ТЕКСТА
' … прочий код для 1го этапа
ElseIf shp.TextFrame2.TextRange.Characters.Text = "Step TWO" Then
shp.TextFrame2.TextRange.Characters.Text = "Step THREE"
shp.IncrementTop 100 ' двигаем ВНИЗ
shp.Fill.ForeColor.RGB = vbGreen
' … прочий код для 2го этапа
ElseIf shp.TextFrame2.TextRange.Characters.Text = "Step THREE" Then
shp.TextFrame2.TextRange.Characters.Text = "Step ONE"
shp.IncrementLeft -100: shp.IncrementTop -100 ' двигаем ВЛЕВО и ВВЕРХ (внимание на знаки)
shp.Fill.ForeColor.RGB = vbBlue
shp.TextFrame2.TextRange.Font.Fill.ForeColor.RGB = vbWhite
' … прочий код для 3го этапа
Else: Err.Raise xlErrNA ' если ничего не подошло, то уходим в отладку (так быть не должно)
End If
End Sub
'====================================================================================================
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Семен Фадеев написал: у меня в заявке есть три кнопки
Где? На форме или листе?
Мастерство программиста не в том, чтобы писать программы, работающие без ошибок. А в том, чтобы писать программы, работающие при любом количестве ошибок.
Jack Famous написал: сделайте ОДНУ кнопку... На кнопку повесьте 1 макрос, который идёт 3мя путями (или вызывает 3 макроса) - в зависимости от ситуации
Эммм что то я туплю что значит тремя путями? просто первый раз кнопка должна сделать одно, второй раз другое и третий раз третье и уничтожиться, да можно не создавать новые кнопки просто перерисовывать старую, вот для этого мне нужно пару строчек кода как привязать макрос на ... и как сменить надпись хотя думаю найду.
При открытии книги на кнопке пишем "Ахтунг!", после первого нажатия - надпись - "Сделано". Второй клик меняет надпись на "Класс", третий возвращает "Ахтунг!"
Код
Sub SUPERmacro()
Witn ActiveSheet.Shapes("Button2")
Select Case .Caption
Case "Ахтунг!"
.Caption = "Сделано"
действие1
Case "Сделано"
.Caption = "Класс"
действие2
Case "Класс"
.Caption = "Ахтунг!"
действие3
End Select
End With
End Sub
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Всем спасибо с кейсами не смог с ходу вникнуть а читать новый материал некогда пока, хвостатому отдельное спасибо, просто и доступно новичку. Задачка решена! ЗЫ Ігор Гончаренко спасибо по вашему коду кажется понял Case как применять в принципе.