Страницы: 1 2 След.
RSS
Определение нажатой кнопки
 
Доброго дня...

На листе две кнопки (без макросов).
Как в VBA определить, какая кнопка нажата?

Спасибо.
 
Вы лучше опишите саму задачу, которую пытаетесь решить
Код
Sub Кнопка2_Щелчок()
    MsgBox "Нажата кнопка 2"
End Sub

Sub Кнопка1_Щелчок()
    MsgBox "Нажата кнопка 1"
End Sub
Изменено: Sanja - 07.04.2018 09:46:35
Согласие есть продукт при полном непротивлении сторон
 
govorun, классы, события и в них определить что за объект задействован, но присоединяюсь к Sanja, смысл в чем? Много кнопок и чтоб не писать кучу макросов? Кнопки автоматом создаются и нужно обрабатывать объекты не дописывая обработчик для каждого? .....
По вопросам из тем форума, личку не читаю.
 
Sanja,
Есть набор таблиц на скрытых листах. Я их не хочу показывать, а вернее давать возможность вручную добавлять туда данные.
Научен опытом..., потом гемороя не оберешься разгребать... Для ввода данных пользователю будет показан Лист,  на котором будет две кнопки и "умная таблица".
После заполнения таблицы будет нажата кнопка1 или кнопка2. Соответственно, либо данные таблицы (после проверки) запишутся  в другую основную таблицу, либо Лист скроется без сохранения данных. Таблица на Листе не статична (в части строк).  Количество столбцов статично, но не известно (зависит от количества  столбцов в основной таблице).
Может есть другой вариант?
Может через форму? - но я там не нашел подходящего стандартного прибамбаса.
Изменено: govorun - 07.04.2018 11:23:55
 
Цитата
govorun написал: будет две кнопки
См. обработчики нажатия этих кнопок выше(#2)
Согласие есть продукт при полном непротивлении сторон
 
Цитата
govorun написал:
На листе две кнопки (без макросов).
читаем дальше:
Цитата
После заполнения таблицы будет нажата кнопка1 или кнопка2.
ну нажата и что??? судя по сообщению #1 - это кнопки для нажимания, а не для макросов
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
govorun,  в дополнение  Есть два разных объекта кнопка Form Control и ActiveX Control. И осторожно, при такой работе можете терять стек UNDO, то есть отмена действий будет не возможна стандартным методом.
По вопросам из тем форума, личку не читаю.
 
Цитата
Ігор Гончаренко написал:
это кнопки для нажимания
Совершенно верно....
 
Цитата
БМВ написал:
отмена действий будет не возможна стандартным методом
Понимаю...
Екселевский файл создается с базовым (от слов База данных) подходом. Никакого прямого доступа к данным. Если коряво ввел данные - то так и останется, либо редактируй отдельные записи...
Будет обработчик на редактирование определенных записей.
 
Сообщение #2 видели?
Согласие есть продукт при полном непротивлении сторон
 
Sanja,
Видел и ломаю голову, насколько это то. По всему видать - это тело макроса для кнопки. А мне нужно отследить действие с кнопками.
Код
If нажата кнопка1 Then
....
End if
Или куда этот ((#2)) код записать?  
 
Смотрите вторую Вашу тему. Там я, кстати за Вас, предложил адекватное название для темы
Согласие есть продукт при полном непротивлении сторон
 
Sanja,посмотрел, спасибо...
а как самому название темы изменить?
 
Цитата
govorun написал:
А мне нужно отследить действие с кнопками.
Кто вызвал функцию или процедуру?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Предложите название темы. Модераторы заменят.
 
Sanja, постом #2 проблема решена.
Дмитрий Щербаков, #14 полезная штука
 
Вы не можете сами менять название. только модераторы.
 
Цитата
Дмитрий Щербаков написал:
Кто вызвал функцию или процедуру?
никто ничего не вызывал, ни функций ни процедур.
см.#1
Цитата
На листе две кнопки (без макросов).
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Ігор Гончаренко написал:
никто ничего не вызывал, ни функций ни процедур
но это не мешает на каждую кнопку повесить любой лажовый код и тогда кнопка таки будет что-то вызывать и можно будет понять, какая нажата :)
А так-то да, Игорь, ты прав. Я лишь привел пример статьи, которая может быть полезна для решения задачи
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дима,
да просто удивление берет (мягко говоря)
навесить на лист две кнопки и не привязать к ним макросы!
и на кой они там, эти кнопки без макросов??? где смысл?
все стандартные элементы выполняют свои довольно четкие стандартные функции
привязка к кнопке макроса - это практически карма кнопок всегда и везде! в этом практически весь смысл существования этих элементов!
стандартная задача кнопки - по нажатию на нее активировать макрос, привязанный к этой кнопке.

и тут ноу-хау!!! начиняем лист кнопками без макросов! единственный вопрос, который возник у меня: "зачем ограничивать абсурд всего двумя кнопками? если есть возможность довести его до абсолюта!"
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 

Off

.. дааа, видел я макросы без кнопок, но кнопку без макросов вижу первый раз... "

"...дааа, видала я котов без улыбок, но улыбку без кота вижу первый раз.."
По вопросам из тем форума, личку не читаю.
 
точно, чистое зазеркалье
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Ігор Гончаренко написал: и на кой они там, эти кнопки без макросов???
Что бы понять чего хочет сделать пользователь (#4).
Цитата
Ігор Гончаренко написал: и тут ноу-хау
1. Ноу-хау - это двигатель прогресса. И мне не совсем понятна Ваша реакция на появление ноу-хау.
2. Возможно Вы не сталкивались с ситуациями, когда при нажатии на кнопку вылетает какая то ошибка и раскрывается код макроса. И дальше - что пользователю в голову взбредет. По-этому - минимум доступа к коду и данным.
 
двигатель прогресса - это лень человека. Вон зверье нелинивое, носится друг за другом, по скалам за травкой карабкается и ненужны им ни ноу ни хау

Цитата
govorun написал:
вылетает какая то ошибка и раскрывается код макроса.
а вот это все обрабатывается и в правильно написанном коде такого не должно возникать.
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
правильно написанном коде такого не должно возникать.
Согласен в целом и полностью.
Из опыта. Забыл закрыть в Комбобоксе возможность редактирования записей. Ушел в отпуск. Звонок коллеги.
- я не нашла в списке то, что мне нужно, что делать?
- рядом кнопку видишь на которой написано "Если не нашли - добавить"?
- да.
- нажимай и там все понятно...
Вышел с отпуска и обомлел. Вместо того что бы нажать на кнопку она в комбобоксе исправляла записи. Это была база данных. Я пол дня потратил что бы исправить. Хорошо что протокол соорудил.  
 
Off
Цитата
govorun написал:
Вместо того что бы нажать на кнопку она в комбобоксе исправляла записи.
А вот это последствия использования Excel не совсем по назаначению. Наверно странно слышать от влюбленного в этот продукт человека, но я считаю ,что это не система для баз данных, коллективного пользования и.т.д. , хотя встречал очень сильно написанные инструменты.
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
последствия использования Excel
Это был не Excel, это была (собственно и сейчас есть) база данных.
Я бы и сейчас за Excel не взялся, но судьба заставляет...
 
Off
Цитата
govorun написал:
Это был не Excel
Тогда как напрямую записи правились? Ладно, опустим. К теме не относится совсем.
По вопросам из тем форума, личку не читаю.
 
"если есть возможность сделать что-нибудь не правильно - обязательно найдется человек, который это сделает!"
правильный путь - не писать бестолковых макросов, а не удивляться бестолковости пользователей, для меня абсолютно очевидно, что виноват в этом случае программист, который понаоставлял граблей, а не пользователь, который на них наступил.
наивно рассчитывать, что в каждом поле ввода пользователь будет вносить ТОЛЬКО ПОДХОДЯЩИЕ данные при возможности внести разные)) и т.д.  
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Оказалось проблема не решена. Макрос на кнопке можно править. Мне нужно отследить действие с кнопками, не прописать макрос для кнопки, а именно отследить действие, что кнопка нажата.
Код
If нажата кнопка1 Then
... 
End if
На кнопке не должно быть макроса.
Изменено: govorun - 08.04.2018 21:36:32
Страницы: 1 2 След.
Наверх