Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Иммитация 'Ctrl + Z'

263
04 января 2005 года
koltaviy
816 / / 16.12.2004
Всем привет!.. Подскажите как сыммитировать нажатие клавиш 'Ctrl + Z'... Задача заключается в том, что если пользователь вводит неудовлетворяющее нас значение в ячейку, то значение не меняется, т.е. остается таким же, как и до ввода!!:???:
275
04 января 2005 года
pashulka
985 / / 19.09.2004
Если речь идёт об MS Excel, то может имеет смысл воспользоваться событием рабочего листа или книги, например :

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'здесь проверять значение на допустимость и при необходимости отменять ввод
End Sub
263
04 января 2005 года
koltaviy
816 / / 16.12.2004
Цитата:
Originally posted by pashulka
Если речь идёт об MS Excel, то может имеет смысл воспользоваться событием рабочего листа или книги, например :

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'здесь проверять значение на допустимость и при необходимости отменять ввод
End Sub


Спасибо за ответ, но я же не спрашивал как отследить изменение ячейки!.. Я спрашивал как сыммитировать нажатие клавиш, "отменять ввод"!!

275
04 января 2005 года
pashulka
985 / / 19.09.2004
Инструкция SendKeys

P.S. Если не хотите получать в дальнейшем альтернативные варианты решения Вашей задачи, то просто формулируйте задачу, без дальнейших об'яснений.
1.8K
04 января 2005 года
ziv
71 / / 04.07.2003
Цитата:
Originally posted by koltaviy

Спасибо за ответ, но я же не спрашивал как отследить изменение ячейки!.. Я спрашивал как сыммитировать нажатие клавиш, "отменять ввод"!!



тебе и ответили :)
чтоб провести отмену, нужно отловить изменение в ячейке- правильно или нет.

а команда:
SendKeys ("^Z")

258
04 января 2005 года
SergeySV
1.5K / / 19.03.2003
Цитата:
Originally posted by koltaviy

Спасибо за ответ, но я же не спрашивал как отследить изменение ячейки!.. Я спрашивал как сыммитировать нажатие клавиш, "отменять ввод"!!



Чтож, добавим еще... "отменять ввод" и Ctrl-Z - это не одно и тоже, может быть раскладка другая - уже встречался с таким на других компьютерах, наконец просто сам пользователь(макрос) может заблокировать(заменить на свои) любые ст. комбинации клавиш Excel - через Application.OnKey (+Application.EnableCancelKey)

И кстати, в Excel'е есть уже готовый метод для отмены...

1.8K
04 января 2005 года
ziv
71 / / 04.07.2003
Цитата:
Originally posted by SergeySV


Чтож, добавим еще... "отменять ввод" и Ctrl-Z - это не одно и тоже, может быть раскладка другая - уже встречался с таким на других компьютерах, наконец просто сам пользователь(макрос) может заблокировать(заменить на свои) любые ст. комбинации клавиш Excel - через Application.OnKey (+Application.EnableCancelKey)

И кстати, в Excel'е есть уже готовый метод для отмены...



гм.гм. можно и так: комбинация Alt+BackSpace
SendKeys ("%{BS}") -раскладка не должна помешать

275
04 января 2005 года
pashulka
985 / / 19.09.2004
Ребята, ну не хочет человек слышать ничего кроме SendKeys, не навязывайте ничего больше, а то он Вас всех "покусает" за советы.
263
05 января 2005 года
koltaviy
816 / / 16.12.2004
Цитата:
Originally posted by pashulka
Ребята, ну не хочет человек слышать ничего кроме SendKeys, не навязывайте ничего больше, а то он Вас всех "покусает" за советы.


pashulka да никого я не кусал, да и задачу вроде бы сформулировал правильно "Подскажите как сыммитировать нажатие клавиш 'Ctrl + Z'". А слушать я хочу всё;) В жизни пригодится!! Всем спасибо!..

275
05 января 2005 года
pashulka
985 / / 19.09.2004
To koltaviy

По первых Вы набросились на старика, то бишь меня. И вдобавок покалечили. А иначе откуда у меня следы волчьих зубов ???

Что касается имитации нажатия клавиш, то все, начиная с меня уже высказали своё единодушное мнение.

Инструкция SendKeys
263
05 января 2005 года
koltaviy
816 / / 16.12.2004
[COLOR=blue]Private Sub Worksheet_Change(ByVal Target As Range)[/COLOR]
[COLOR=blue]Dim oPr As Object[/COLOR]
[COLOR=blue]Set oPr = Intersect(Target, Range("C5:E10"))[/COLOR]
[COLOR=blue]If Not oPr Is Nothing Then[/COLOR]
[COLOR=blue]If Target.Value > 1 Then[/COLOR] [COLOR=blue]SendKeys "^Z"[/COLOR]
[COLOR=blue]Exit Sub[/COLOR]
[COLOR=blue]End IF[/COLOR]
[COLOR=blue]....[/COLOR]
[COLOR=blue]....[/COLOR]
[COLOR=blue]End If[/COLOR]
[COLOR=blue]End Sub[/COLOR]
P.S:Ничего из вышеперечисленного также не срабатывает!
275
05 января 2005 года
pashulka
985 / / 19.09.2004
Ну и кто в конечном варианте оказался прав ... Не надо было "кривляться", а сразу послушаться старика и Вы бы получили готовый код. Не Вы первый наступаете на эти грабли, связанные с подобным макросом.

Совсем забыл, вот собственно говоря готовый код :

Private Sub Worksheet_Change(ByVal Target As Excel.Range)

'***********************************************
' help urllink-doggie-yandex.ru
'***********************************************

On Error Resume Next

If Target.Value > 1 Then
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
End If

End Sub
263
05 января 2005 года
koltaviy
816 / / 16.12.2004
Цитата:
Originally posted by pashulka
Ну и кто в конечном варианте оказался прав ... Не надо было "кривляться", а сразу послушаться старика и Вы бы получили готовый код. Не Вы первый наступаете на эти грабли, связанные с подобным макросом.


:) :) :) :) :) :) Спасибо!!! Снимаю шляпу перед стариком!;)

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог