Страницы: 1
RSS
VBA программное отключение кнопки на листе, Есть кнопка в листе запускающая макрос, хотелось бы её иногда отключать
 
Приветствую всех любителей (ну и конечно "монстров" ексель в первую очередь) нужна ваша помощь ... есть книга в которой на листе существует кнопка
запускающая макрос .... хочется что бы при определенных условиях эта кнопка ( как в форме) принимала недоступный вид (enable = false) . Заранее благодарен за любые ответы.
 
зачем так категорично?
Цитата
HotShot написал:
недоступный вид
есть же If
мож не прав...
Изменено: Catboyun - 18.11.2015 18:39:08
 
Код
Для кнопки на листе из набора элементов управления формы
If Определенное_условие = True Then Worksheets("Лист1").CommandButton1.Enabled = False

Для ActiveX
If Определенное_условие = True Then Worksheets("Лист1").Shapes.Range(Array("CommandButton1")).Enabled = False
Изменено: Sanja - 18.11.2015 18:44:26
Согласие есть продукт при полном непротивлении сторон
 
Цитата
Sanja написал:
Для кнопки на листе из набора элементов управления формыIf Определенное_условие = True Then Worksheets("Лист1").CommandButton1.Enabled = False Для ActiveXIf Определенное_условие = True Then Worksheets("Лист1").Shapes.Range(Array("CommandButton1")).Enabled = Fals
To Sanja:Спасибо, Сейчас буду пробовать ... предпологал, что то такое ... но так и не нашел свойств этого объекта ... еще раз Спасибо.
 
Дв Sanja ... не работает ... говорит Объект не подерживает это свойство или метод ... не знаю может собачка де в другом месте порылась ... :((  
 
Если у Вас кнопка из семейства Элементов управления форм, то там вроде нет Enabled.
Воспользуйтесь видимостью или невидимостью кнопки, например
Код
Worksheets("Лист1").Shapes.Range(Array("Button 1")).Visible = False
Или заменить кнопку на элемент ActiveX, чтобы можно было её блокировать Enabled. Ну, и соответственно макрос переместить на эту кнопку.
Или как вариант прописать условие в макросе. Чтобы при нажатии на кнопку проверялось условие сначала, и если оно не выполняется, то Exit Sub
Мастерство программиста не в том, чтобы писать программы, работающие без ошибок.
А в том, чтобы писать программы, работающие при любом количестве ошибок.
 
Цитата
CAHO написал:
Или заменить кнопку на элемент ActiveX, чтобы можно было её блокировать Enabled. Ну, и соответственно макрос переместить на эту кнопку.
ммм... САНО если можно ... вот с этого места, для "особо одаренных", если можно конечно, то на "пальцах" поясните ... очень нужно ... Пожалуйста
 
Нажмите два раза на кнопку правой кнопкой мыши в разных местах. Там появится список, в котором появится строчка Назначить макрос.
Нажмите на него. Появится окно в котором будет указано какой именно макрос назначен на эту кнопку. В данном случае на картинке макрос называется POIUY.
Далее вставляете на лист кнопку ActiveX. Рисуете её на любом месте листа. Щёлкаете по ней двойным кликом ЛКМ, тем самым попадаете в окно VB.
В окне будет надпись
Код
Private Sub CommandButton1_Click()

End Sub
Вот между этих строчек запихиваете название вашего макроса. В данном случае POIUY.
Код
Private Sub CommandButton1_Click()
POIUY
End Sub
И всё. Теперь нажимаете на кнопку и макрос выполнится. Ту кнопку можно удалить.
Мастерство программиста не в том, чтобы писать программы, работающие без ошибок.
А в том, чтобы писать программы, работающие при любом количестве ошибок.
 
Сано ... прошу прощения, но это не совсем то, что мне хотелось ... дело в том, что  есть лист выполняющий определенный ряд операций с данными по нажатию кнопки помещенной в листе. Однако если данные не удовлетворяют определенным условиям по умолчанию, то кнопка должна быть недоступна. Отсюда и родился вопрос - как сделать уже имеющуюся кнопку листа недоступной при определенных условиях ... (все равно Спасибо .. это тоже думаю потом пригодится).
 
Тогда я не понял какой именно результат вы хотите получить. Пример бы......
Изменено: CAHO - 18.11.2015 21:31:15
Мастерство программиста не в том, чтобы писать программы, работающие без ошибок.
А в том, чтобы писать программы, работающие при любом количестве ошибок.
 
Цитата
CAHO написал:
Тогда я не понял какой именно результат вы хотите получить. Пример бы......
Сано, ну если Вы не уйдете, то сейчас попробую прицепить пример ... ну очень нужна помощь ... правда
 
Цитата
CAHO написал:
Пример бы......
Цитата
HotShot написал:
Сано, ну если Вы не уйдете,
У вас никаких мыслей не возникает?
Прошу не расценивать как предложенме сразу броситься делать.
Изменено: RAN - 18.11.2015 21:43:35
 
Вот это хочется привесить на открытие книги ... лист там один, причем имеет кнопку ... хочется иметь возможность менять статус кнопки (ну если это возможно конечно) ...
Код
Sub fff()
If ActiveWorkbook.Sheets("Лист1").Cells(1, 1) = 1 Then
'кнопка активна и к ней приклеен макрос
Else
'ничего не происходит и кнпока становится неактивной
End If
End Sub
 
Цитата
RAN написал:
У вас никаких мыслей не возникает?
Прошу не расценивать как предложенме сразу броситься делать.
Ну я как бы и пытаюсь выяснить... а возможно ли это? ... если нет ... то буду искать другие пути ...
 
Да уж. Мыслей нет, одни буквы.
Цитата
HotShot написал:
а возможно ли это?
1 ДА
2 НЕТ
Что выбираете?  8-0
 
Ну наверное, работа с кнопкой в листе невозможна ... она зараза такая нигде не отображается в объектах и свойств своих не даёть ...значит глупость все это...
Придется через форму всё таки действовать ... гнусно .. но факт
Тем не менее Большое Спасибо всем откликнувшемся ... Спасибо народ ... ей богу ( хоть есть у кого спросить и не пошлють ..) !
 
Цитата
HotShot написал:
работа с кнопкой в листе невозможна
Неужто?
Цитата
HotShot написал:
она зараза такая нигде не отображается
Цитата
HotShot написал:
значит глупость все это
Факт!
 
Немного запутался. А почему не сделать проще, в самом макросе прописать:
Код
if Условие не выполнено then
   MsgBox "Условие не выполнено"
   Exit  Sub
end if
 
А у меня вопрос, чем не удовлетворяет предложенное  CAHO в ответе #6? Вы ведь пишите о том же. Этот код на кнопку. Она видна но не работает
Код
Sub fff()
If ActiveWorkbook.Sheets("Лист1").Cells(1, 1) = 1 Then
Нужный Вам Макрос 'кнопка активна и к ней приклеен макрос
Else
MsgBox "Извините Я сейчас на перекуре"
Exit Sub 'ничего не происходит [S]и кнпока становится неактивной[/S]
End If
End Sub
Изменено: gling - 18.11.2015 22:50:49
Страницы: 1
Читают тему
Наверх