Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Макрос на сочетания клавиш: как убрать сообщения об ошибке?
 
 автор: Звездная Тень   (26.09.2006 в 15:09)   личное сообщение
 
 

Имеется форма со списком записей и несколькими кнопками:Удалить, Редактировать, Новая и т.п.
В макросе AutoKeys на клавишу F4 посажен макрос такого вида:
КЭлементуУправления - КнопИзмен
КомандыКлавиатуры -"{Enter}"

Когда форма открыта, все работает нормально.
Когда форма закрыта, в окне выдается сообщение:"Команда КЭлементуУправления" в данное время недоступна".

Помогите, пожалуйста, сделать так, чтобы сообщение не появлялось.
1)Разрешить нажатие F4 только при активной форме ;
2)В том же макросе проверить, есть ли такой элемент управления;
3)В случае данной ошибки исполнения не предпринимать никаких действий.
Пока не представляю, как именно проделать что-то из этого списка.

  Ответить  
 
 автор: osmor   (26.09.2006 в 15:17)   личное сообщение
 
 

а можен не имитировать нажатие кнопки, а просто вызвать ту функцию которая под кнопкой "КнопИзмен"

  Ответить  
 
 автор: Звездная Тень   (26.09.2006 в 15:27)   личное сообщение
 
 

КнопИзмен, в зависимости от содержания записи, открывает для этой записи одну из 3 форм. В каждой из них редактируются данные одной этой записи.
Для открытия форм используется выражение типа "id=Me![id]"
Т.е. при закрытой форме функция все равно будет выдавать ошибку.

  Ответить  
 
 автор: osmor   (26.09.2006 в 15:56)   личное сообщение
 
 

а проверить открыта форма или нет...
CurrentProject.AllForms("форма").isloaded
т.е. идея проста
вынести код в модуль в отдельную функцию
в ней проверять загруженность формы
использовать вместо me
screen.activeform
вызвать эту фунцкию и из кнопки и из макроса

  Ответить  
 
 автор: Звездная Тень   (26.09.2006 в 16:10)   личное сообщение
 
 

Спасибо за идею.
На клавишу F4 посадить не макрос, а функцию.
В ней проверить if Application.CurrentObjectType= acForm And Application.CurrentObjectName= "Отгрузка" then
нужные действия.
Можно даже мою имитацию- перейти к объекту и нажать Enter

  Ответить  
 
 автор: osmor   (26.09.2006 в 16:31)   личное сообщение
 
 

ну можно и так, если вам нужно что бы эта форма обязательно была активной...
можно туда же приделать select case для разных форм и вызывать одной клавишей разные функции для разных форм.

if Application.CurrentObjectType= acForm  then
   select case Application.CurrentObjectName
        case "Форма1"
            call func1
        case "отгрузка"
            call func2
       case else
   end select
end if

  Ответить  
 
 автор: Звездная Тень   (27.09.2006 в 09:40)   личное сообщение
 
 

Собственно, клавиша нужна мне для работы с активной формой. Набивка данных должна быть достаточно быстрой, без переключения внимания между клавиатурой и мышью.

Планируется еще две формы подобной структуры, с теми же клавишами. Только открывать они должны другие формы и совершать другие действия.
Можно и общей функцией для всех. А можно функцию с одним именем создавать внутри каждой формы. А вне форм держать другую, состоящую из заголовка и конца и не совершающую никаких действий (ну, на худой конец,выводящую окошко с сообщением).
Спасибо. Не дали пропасть.

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList