Excel vba стрелка вниз

Имитация нажатия клавиш на клавиатуре в VBA Excel с помощью оператора SendKeys, в том числе эмуляция нажатия сочетаний клавиш. Синтаксис, коды, примеры.

Параметры оператора SendKeys:

Параметр Описание
string Обязательный параметр. Строковое выражение, возвращающее код клавиши (сочетания клавиш).
wait Необязательный параметр. Логическое значение, определяющее режим ожидания.
False (по умолчанию) – контроль процедуре возвращается сразу после отправки кода клавиш.
True – перед возвратом контроля процедуре коды клавиш обрабатываются.

Имитация нажатия клавиш

Эмуляция нажатия алфавитно-цифровых клавиш из кода VBA Excel, не представляющих спецсимволы: параметру string задается значение символа в прямых кавычках, например, "А", "Абвгд", "356".

Имитация нажатия клавиш, представляющих спецсимволы: параметру string задается значение символа в фигурных скобках, например, "{^}", "{)}".

Спецсимволы, которые следует заключать в фигурные скобки: плюс +, возведение в степень ^, знак процента %, тильда ~, круглые скобки (), квадратные скобки [] и сами фигурные скобки {}. Символы фигурных скобок указываются так: "{{}" и "{}}".

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

Фигурные скобки используются и для имитации нескольких нажатий одной клавиши из кода VBA Excel. В этом случае параметр string записывается в виде {клавиша число}, где число – количество нажатий. Например: "{а 10}".

Коды специальных клавиш

Клавиша Код
BACKSPACE {BACKSPACE} или {BS}
BREAK {BREAK}
CAPS LOCK {CAPSLOCK}
DEL или DELETE {DELETE} или {DEL}
СТРЕЛКА ВНИЗ {DOWN}
END {END}
ENTER {ENTER} или ~
ESC {ESC}
HELP {HELP}
HOME {HOME}
INS или INSERT {INSERT} или {INS}
СТРЕЛКА ВЛЕВО {LEFT}
NUM LOCK {NUMLOCK}
PAGE DOWN {PGDN}
PAGE UP {PGUP}
PRINT SCREEN {PRTSC}
СТРЕЛКА ВПРАВО {RIGHT}
SCROLL LOCK {SCROLLLOCK}
TAB {TAB}
СТРЕЛКА ВВЕРХ {UP}
F1 … F16 {F1}{F16}

Эмуляция сочетаний клавиш

Чтобы указать сочетание клавиш с SHIFT, CTRL, ALT или их комбинацией, необходимо добавить перед кодом клавиши один или несколько следующих кодов:

Клавиша Код
SHIFT +
CTRL ^
ALT %

Чтобы указать, что клавиши SHIFT, CTRL и ALT в любом сочетании необходимо удерживать, нажимая несколько других клавиш, заключите код для последних клавиш в круглые скобки. Например, чтобы указать, что нужно удерживать клавишу SHIFT, нажимая клавиши а, б, в, г, д, введите "+(абвгд)".

Важное примечание:
Применение оператора SendKeys может приводить к автоматическому отключению* правого цифрового блока клавиатуры (переключает на стрелки и специальные клавиши). Чтобы вернуть исходную функциональность цифрового блока, необходимо в конце процедуры применить имитацию нажатия клавиши «NUM LOCK»: SendKeys "{NUMLOCK}". К сожалению, работает не всегда.

* Обнаружено в Windows 8.1 (Excel 2016).

Примеры с оператором SendKeys

Коды примеров запускаются через кнопку на рабочем листе, иначе имитация нажатия клавиш произойдет в окне редактора VBA с записью символов внутри процедуры. Попробуйте, ради интереса, запустить код первого примера из редактора VBA.

Пример 1
Заполняем первые три ячейки столбца «A» различными значениями, имитируя нажатия клавиш из кода VBA Excel:

Sub Primer1()

‘Выбираем первую ячейку

Range(«A1»).Select

‘Нажимаем клавиши «а», «б» и «в»

SendKeys «абв»

‘Нажимаем «ENTER»

SendKeys «~»

‘Нажимаем клавиши «1», «2», «3» и «ENTER»

SendKeys «123  ~»

‘Нажимаем клавишу «7» пять раз и «ENTER»

SendKeys «{7 5} ~»

‘Активируем правый цифровой блок

‘SendKeys «{NUMLOCK}»

End Sub

Пример 2
Раскрываем с помощью кода VBA Excel автофильтр или выпадающий список (имитация нажатия сочетания клавиш ALT+↓):

Sub Primer2()

‘Выбираем ячейку с автофильтром или раскрывающимся списком

Range(«D1»).Select

‘Раскрываем список

SendKeys «%{DOWN}»

‘Активируем правый цифровой блок

‘SendKeys «{NUMLOCK}»

End Sub

Пример 3
Еще три варианта эмуляции нажатия сочетаний клавиш:

‘Создание новой книги

SendKeys «^n»

‘Открытие Диспетчера имен

SendKeys «^{F3}»

‘Открытие Диспетчера задач

SendKeys «^+{ESC}»

light26 Дата: Вторник, 04.09.2012, 21:11 | Сообщение № 2
KuklP Дата: Вторник, 04.09.2012, 21:16 | Сообщение № 3
Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728

Ответить

Gustav Дата: Вторник, 04.09.2012, 22:46 | Сообщение № 4

А Вы не мышкой возвращайтесь из AL1, а кнопкой Home — окажетесь в A1 и Стрелка Вниз — в A2. Без всяких макросов.

Если же хочется непременно с макросами повозиться, то вот несколько дней назад была похожая тема: http://www.excelworld.ru/forum/2-2258-1

А Вы не мышкой возвращайтесь из AL1, а кнопкой Home — окажетесь в A1 и Стрелка Вниз — в A2. Без всяких макросов.

Если же хочется непременно с макросами повозиться, то вот несколько дней назад была похожая тема: http://www.excelworld.ru/forum/2-2258-1 Gustav

А Вы не мышкой возвращайтесь из AL1, а кнопкой Home — окажетесь в A1 и Стрелка Вниз — в A2. Без всяких макросов.

Если же хочется непременно с макросами повозиться, то вот несколько дней назад была похожая тема: http://www.excelworld.ru/forum/2-2258-1 Автор — Gustav
Дата добавления — 04.09.2012 в 22:46

Gustav Дата: Вторник, 04.09.2012, 23:07 | Сообщение № 5

200?’200px’:»+(this.scrollHeight+5)+’px’);»>
Sub turnNewHomeOn() ‘запустить один раз перед массовым использованием
Application.OnKey ««, «newHomeReaction»
End Sub

Sub newHomeReaction()
Cells(ActiveCell.Row, 1).Offset(1).Select
End Sub

Sub turnNewHomeOff() ‘запустить один раз по окончании массового использования
Application.OnKey «»
End Sub

200?’200px’:»+(this.scrollHeight+5)+’px’);»>
Sub turnNewHomeOn() ‘запустить один раз перед массовым использованием
Application.OnKey ««, «newHomeReaction»
End Sub

Sub newHomeReaction()
Cells(ActiveCell.Row, 1).Offset(1).Select
End Sub

Sub turnNewHomeOff() ‘запустить один раз по окончании массового использования
Application.OnKey «»
End Sub

200?’200px’:»+(this.scrollHeight+5)+’px’);»>
Sub turnNewHomeOn() ‘запустить один раз перед массовым использованием
Application.OnKey ««, «newHomeReaction»
End Sub

Sub newHomeReaction()
Cells(ActiveCell.Row, 1).Offset(1).Select
End Sub

Sub turnNewHomeOff() ‘запустить один раз по окончании массового использования
Application.OnKey «»
End Sub

gling Дата: Среда, 05.09.2012, 21:09 | Сообщение № 6
Gustav Дата: Четверг, 06.09.2012, 10:27 | Сообщение № 7

200?’200px’:»+(this.scrollHeight+5)+’px’);»>
Sub turnNewRightOn() ‘запустить один раз ПЕРЕД массовым использованием
Application.OnKey ««, «newRightReaction»
End Sub

Sub newRightReaction() ‘движение вправо по пустым ячейкам
Dim nextCell As Range

Set nextCell = ActiveCell.Next
Do While Not IsEmpty(nextCell)
Set nextCell = nextCell.Next
Loop
nextCell.Select
End Sub

Sub turnNewRightOff() »запустить один раз ПОСЛЕ массового использования
Application.OnKey «»
End Sub

[/vba]
Что касается возврата в колонку A на следующую строку, то я рекомендовал бы всё-таки переопределенный Home (см. ранее макросы) — она нормально работает, Вы ее, наверное, и не пробовали, расстроившись от того, что обычный Home в условиях фиксации столбцов не возвращается в колонку A

P.S. Если Вам всё же больше нравится Enter, то можете в макросах по Home заменить на , если будете пользоваться маленьким Enter’ом на числовой клавиатурой, ИЛИ на

, если будете пользоваться обычной клавишей Enter (большой).

200?’200px’:»+(this.scrollHeight+5)+’px’);»>
Sub turnNewRightOn() ‘запустить один раз ПЕРЕД массовым использованием
Application.OnKey ««, «newRightReaction»
End Sub

Sub newRightReaction() ‘движение вправо по пустым ячейкам
Dim nextCell As Range

Set nextCell = ActiveCell.Next
Do While Not IsEmpty(nextCell)
Set nextCell = nextCell.Next
Loop
nextCell.Select
End Sub

Sub turnNewRightOff() »запустить один раз ПОСЛЕ массового использования
Application.OnKey «»
End Sub

[/vba]
Что касается возврата в колонку A на следующую строку, то я рекомендовал бы всё-таки переопределенный Home (см. ранее макросы) — она нормально работает, Вы ее, наверное, и не пробовали, расстроившись от того, что обычный Home в условиях фиксации столбцов не возвращается в колонку A

P.S. Если Вам всё же больше нравится Enter, то можете в макросах по Home заменить на , если будете пользоваться маленьким Enter’ом на числовой клавиатурой, ИЛИ на

, если будете пользоваться обычной клавишей Enter (большой). Gustav

200?’200px’:»+(this.scrollHeight+5)+’px’);»>
Sub turnNewRightOn() ‘запустить один раз ПЕРЕД массовым использованием
Application.OnKey ««, «newRightReaction»
End Sub

Sub newRightReaction() ‘движение вправо по пустым ячейкам
Dim nextCell As Range

Set nextCell = ActiveCell.Next
Do While Not IsEmpty(nextCell)
Set nextCell = nextCell.Next
Loop
nextCell.Select
End Sub

Sub turnNewRightOff() »запустить один раз ПОСЛЕ массового использования
Application.OnKey «»
End Sub

[/vba]
Что касается возврата в колонку A на следующую строку, то я рекомендовал бы всё-таки переопределенный Home (см. ранее макросы) — она нормально работает, Вы ее, наверное, и не пробовали, расстроившись от того, что обычный Home в условиях фиксации столбцов не возвращается в колонку A

P.S. Если Вам всё же больше нравится Enter, то можете в макросах по Home заменить на , если будете пользоваться маленьким Enter’ом на числовой клавиатурой, ИЛИ на

, если будете пользоваться обычной клавишей Enter (большой). Автор — Gustav
Дата добавления — 06.09.2012 в 10:27

Источник

Excel макрос стрелка вниз

= Мир MS Excel/стрелка вниз/вверх — Мир MS Excel

Войти через uID

Войти через uID

Модератор форума: китин, _Boroda_

Мир MS Excel » Вопросы и решения » Вопросы по VBA » стрелка вниз/вверх (Макросы/Sub)

стрелка вниз/вверх

jijik2 Дата: Четверг, 09.04.2015, 17:23 | Сообщение № 1
TimSha Дата: Четверг, 09.04.2015, 17:32 | Сообщение № 2
«Ctrl+S» — достойное завершение ваших гениальных мыслей. 😉

Ответить

jijik2 Дата: Четверг, 09.04.2015, 17:36 | Сообщение № 3
SkyPro Дата: Четверг, 09.04.2015, 17:41 | Сообщение № 4
jijik2 Дата: Четверг, 09.04.2015, 17:53 | Сообщение № 5
Roman777 Дата: Четверг, 09.04.2015, 18:02 | Сообщение № 6
jijik2 Дата: Четверг, 09.04.2015, 18:06 | Сообщение № 7
Rioran Дата: Четверг, 09.04.2015, 18:06 | Сообщение № 8

Возможно, Вам больше подойдёт такое решение, как во вложении.

Не надо никаких кнопок или искажения вида книги. По нажатию Контрол+Шифт+Q Вас вернёт в начало текущей страницы книги.

200?’200px’:»+(this.scrollHeight+5)+’px’);»> Private Sub Workbook_Activate()
Application.OnKey «+^Q», «Show_Page_Start»
End Sub

Private Sub Workbook_Deactivate()
Application.OnKey «+^Q»
End Sub

[/vba]
В модуле для макросов:

Возможно, Вам больше подойдёт такое решение, как во вложении.

Не надо никаких кнопок или искажения вида книги. По нажатию Контрол+Шифт+Q Вас вернёт в начало текущей страницы книги.

200?’200px’:»+(this.scrollHeight+5)+’px’);»> Private Sub Workbook_Activate()
Application.OnKey «+^Q», «Show_Page_Start»
End Sub

Private Sub Workbook_Deactivate()
Application.OnKey «+^Q»
End Sub

[/vba]
В модуле для макросов:

Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279

Ответить

Сообщение jijik2, здравствуйте.

Возможно, Вам больше подойдёт такое решение, как во вложении.

Не надо никаких кнопок или искажения вида книги. По нажатию Контрол+Шифт+Q Вас вернёт в начало текущей страницы книги.

Источник

Adblock
detector

стрелка вниз/вверх

jijik2

Дата: Четверг, 09.04.2015, 17:23 |
Сообщение № 1

Группа: Пользователи

Ранг: Новичок

Сообщений: 31


Репутация:

0

±

Замечаний:
40% ±


Excel 2010

в макросе совсем новичок потихоньку изучаю те коды которые мне нужны,но вот беда не могу ни как найти кнопку передвижения по странице excel вверх/вниз,так как информаций в книге много, прокручивать в ручную не удобно,можно ли создать кнопку которая будет двигаться вместе с прокруткой.и при любом случай, если читающий захочет вернуться обратно,нажмет ее и вернется в начало страницы????

 

Ответить

TimSha

Дата: Четверг, 09.04.2015, 17:32 |
Сообщение № 2

Группа: Проверенные

Ранг: Ветеран

Сообщений: 627


Репутация:

94

±

Замечаний:
0% ±


Excel 2013 Pro +

Лисапед — зачем?! Есть средняя кнопка мыхи или колесо, удерживаем и показываем кресту куда крутить страницу. Вариант?.. ;)


«Ctrl+S» — достойное завершение ваших гениальных мыслей!.. ;)

 

Ответить

jijik2

Дата: Четверг, 09.04.2015, 17:36 |
Сообщение № 3

Группа: Пользователи

Ранг: Новичок

Сообщений: 31


Репутация:

0

±

Замечаний:
40% ±


Excel 2010

TimSha, начальство у меня не одаровано познанием простейших основ,им нужно что бы все было подписано и как одноклассниках(((

 

Ответить

SkyPro

Дата: Четверг, 09.04.2015, 17:41 |
Сообщение № 4

Группа: Друзья

Ранг: Старожил

Сообщений: 1206


Репутация:

255

±

Замечаний:
0% ±


2010

В шапке кнопка, а шапка закреплена через «Вид — закрепить области».
На кнопку повесить [vba][/vba]


skypro1111@gmail.com

Сообщение отредактировал SkyProЧетверг, 09.04.2015, 17:43

 

Ответить

jijik2

Дата: Четверг, 09.04.2015, 17:53 |
Сообщение № 5

Группа: Пользователи

Ранг: Новичок

Сообщений: 31


Репутация:

0

±

Замечаний:
40% ±


Excel 2010

SkyPro, вроде работает единственное но если кнопка на верхушке то возврат лучше делать на
[a2].select
а так,спасибо!очень удобный способ.
А есть способ все-таки сделать так что бы кнопка не в шапке находилась а двигалась вместе с прокруткой?

 

Ответить

Roman777

Дата: Четверг, 09.04.2015, 18:02 |
Сообщение № 6

Группа: Проверенные

Ранг: Ветеран

Сообщений: 980


Репутация:

127

±

Замечаний:
0% ±


Excel 2007, Excel 2013

jijik2, Вам сразу написали, что кнопку необходимо в шапку, а шапку закрепить областью…) чтобы при прокрутке таблицы шапка оставалась на месте).


Много чего не знаю!!!!

 

Ответить

jijik2

Дата: Четверг, 09.04.2015, 18:06 |
Сообщение № 7

Группа: Пользователи

Ранг: Новичок

Сообщений: 31


Репутация:

0

±

Замечаний:
40% ±


Excel 2010

Roman777, вы меня не поняли, я имела виду что бы кнопка была плавающей без закрепление ее в шапке,как стрелки на любых сайтах.Т.е кнопка сбоку справа в середине листа.

 

Ответить

Rioran

Дата: Четверг, 09.04.2015, 18:06 |
Сообщение № 8

Группа: Авторы

Ранг: Ветеран

Сообщений: 903


Репутация:

290

±

Замечаний:
0% ±


Excel 2013

jijik2, здравствуйте.

Возможно, Вам больше подойдёт такое решение, как во вложении.

Не надо никаких кнопок или искажения вида книги. По нажатию Контрол+Шифт+Q Вас вернёт в начало текущей страницы книги.

В модуле книги:

[vba]

Код

Private Sub Workbook_Activate()
     Application.OnKey «+^Q», «Show_Page_Start»
End Sub

Private Sub Workbook_Deactivate()
     Application.OnKey «+^Q»
End Sub

[/vba]
В модуле для макросов:

[vba]

Код

Sub Show_Page_Start()
     ActiveSheet.Cells(1, 1).Activate
End Sub

[/vba]

К сообщению приложен файл:

Test_68.xlsb
(16.9 Kb)


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279

 

Ответить

jijik2

Дата: Четверг, 16.04.2015, 13:02 |
Сообщение № 9

Группа: Пользователи

Ранг: Новичок

Сообщений: 31


Репутация:

0

±

Замечаний:
40% ±


Excel 2010

Rioran, Спасибо!все-таки первая мысль больше понравилось)

 

Ответить

RAN

Дата: Четверг, 16.04.2015, 13:22 |
Сообщение № 10

Группа: Друзья

Ранг: Экселист

Сообщений: 5645

А есть способ все-таки сделать так что бы кнопка не в шапке находилась а двигалась вместе с прокруткой?

Можно.
Правда при этом все остальное работать не очень будет.


Быть или не быть, вот в чем загвоздка!

 

Ответить

krosav4ig

Дата: Четверг, 16.04.2015, 21:26 |
Сообщение № 11

Группа: Друзья

Ранг: Старожил

Сообщений: 2346


Репутация:

989

±

Замечаний:
0% ±


Excel 2007,2010,2013

при этом все остальное работать не очень будет.

ниче не знаю, у мну все намана работает ;)
Кнопка появляется при активации листа. Перемещается по экрану левой кнопкой, нажимается правой кнопкой или двойным тыком

К сообщению приложен файл:

4083188.xls
(62.5 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4igЧетверг, 16.04.2015, 21:49

 

Ответить

excelhelprus

Дата: Пятница, 17.04.2015, 06:37 |
Сообщение № 12

Группа: Пользователи

Ранг: Участник

Сообщений: 63


Репутация:

5

±

Замечаний:
20% ±


2015

на x64 надо допилить.. Да и как во время активной формы запустить другой макрос?

 

Ответить

krosav4ig

Дата: Пятница, 17.04.2015, 14:14 |
Сообщение № 13

Группа: Друзья

Ранг: Старожил

Сообщений: 2346


Репутация:

989

±

Замечаний:
0% ±


Excel 2007,2010,2013

excelhelprus, ну дык взять и запустить, форма-то не модальная.


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

 

Ответить

Цитата
towelie написал: нужен именно аналог стрелки ВНИЗ на клавиатуре!

Собсно

Код
Application.SendKeys "{Down}"

но это ненадежный способ, который применяется в самом крайнем случае. Если в момент работы команды активным окажется какое-либо другое окно (напр. системное сообщение), то «нажание кнопки» уйдет туда.

Цитата
towelie написал:
есть ли функция VBA для активации ячейки следующей снизу ВИДИМОЙ (после фильтра)

Лучше всего перебрать диапазон видимых ячеек, напр. в 1 столбце автофильтра

Код
Dim c As Range
With ActiveSheet.AutoFilter.Range.Columns(1)
  For Each c In .Resize(.Rows.Count - 1).Offset(1).SpecialCells(xlCellTypeVisible)
    c.Select 'например
  Next
End With

Чтобы перейти от ячейки с к след. видимой:

Код
Set c = Range(c.Offset(1), Cells(Rows.Count, c.Column)).SpecialCells(xlCellTypeVisible)(1)

Формулировка задачи:

здравствуйте, собственно сабж

Код к задаче: «Возможно ли нажать Стрелочку вниз, используя SendKeys»

textual

Option Explicit
 
Sub NFCKitssss()
 
'открыть программу NFC Kits путём открытия файла NFCKits.ndef
CreateObject("WScript.Shell").Run "F:NFCKits.ndef"
'имитация нажатия на кнопку стрелка вниз 3 раза для перехода на строку пункт меню Tap and Send/Write Tag: Telephone
SendKeys "{DOWN 3}"
'имитация нажатия на кнопку DELETE для обнуления поля ввода
SendKeys "{DELETE 50}"
'ввод нужного текста в поле ввода
SendKeys String:="+79028912680"
'закрыть программу NFC Kits путём закрытия файла NFCKits.ndef
'???
 
End Sub
 
 
Private Sub CommandButton1_Click()
Call NFCKitssss
End Sub

Полезно ли:

12   голосов , оценка 3.583 из 5

Понравилась статья? Поделить с друзьями:
  • Excel vba страница с текстом
  • Excel vba столбец именованного диапазона
  • Excel vba столбец активной ячейки
  • Excel vba стиль ячейки
  • Excel vba стать продвинутым пользователем за неделю