Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/21: Рейтинг темы: голосов - 21, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 02.08.2016
Сообщений: 4

Как запустить макрос когда проваливаешься в ячейку

24.07.2017, 06:34. Показов 4569. Ответов 5

Студворк — интернет-сервис помощи студентам
Добрый день! Если я проваливаюсь в ячейку определенного столбца (пусть 1-го) то должен запускаться макрос.
Под проваливаться, я понимаю когда переходишь в режим редактирования ячейки по нажатию клавише F2 - тоже самое что при двойном клике.
Для двойного клика я задачу решил.

Visual Basic
1
2
3
4
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Target.Column = 23 Then myMacros
    Cancel = True
End Sub
Как тоже самое сделать при нажатии F2 не могу найти.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.07.2017, 06:34
Ответы с готовыми решениями:

Как запустить макрос при внесении даных в ячейку
как запустить макрос при внесении даных в ячейку...... тоесть есть ячейка.....в нее вносять даные при нажатии "Enter" ...

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

Как заставить макрос после выполнения переходить на следующую ячейку
Имееться макрос для полученя веса GetStaticWeight. после выполнения он записывает в ячейку А1 вес. КАК ЗАСТАВИТЬ МАКРОС ПОСЛЕ ВЫПОЛНЕНИЯ...

5
 Аватар для avporsk
53 / 32 / 13
Регистрация: 03.11.2016
Сообщений: 162
24.07.2017, 09:42
Сначала назначаешь событию нажатие кнопки какой либо макрос:
Visual Basic
1
2
3
Private Sub Workbook_Open()
Application.OnKey "{F2}", "mymac"
End Sub
А затем в самом макросе прописываешь действия:

Visual Basic
1
2
3
Public Sub mymac()
MsgBox ("F2 нажали")
End Sub
0
0 / 0 / 0
Регистрация: 02.08.2016
Сообщений: 4
24.07.2017, 10:36  [ТС]
Цитата Сообщение от avporsk Посмотреть сообщение
Сначала назначаешь событию нажатие кнопки какой либо макрос:
Visual BasicВыделить код
1
2
3
Private Sub Workbook_Open()
Application.OnKey "{F2}", "mymac"
End Sub
Не много похоже на костыль, ведь макрос должен запускаться, когда ячейка вошла в режим редактирования, а не когда нажимается F2 - но поскольку эти два события тесно связаны, так что в редактирование ячейка может войти только либо по двойному клику (что у меня уже отработано), либо по F2. То годиться, спасибо!
Но возникает другая проблема - хотелось бы остальные ячейки, те что не из 23 столбца - редактировать привычным образом - чтобы нажимать F2, проваливаться туда не запуская макрос.
Т.е. теперь, как сделать так, чтобы F2 запускал мой макрос только в том случае, если F2 применяется к ячейке из определенного столбца (в моем случае 23), а на всех остальных ячейках работал стандартно - просто проваливался бы в нее для редактирования.
0
 Аватар для avporsk
53 / 32 / 13
Регистрация: 03.11.2016
Сообщений: 162
24.07.2017, 10:43
Лучший ответ Сообщение было отмечено Sibkedr как решение

Решение

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


Visual Basic
1
2
3
4
5
6
7
Public Sub mymac()
Application.OnKey "{F2}"        ' восстанавливаем действие по F2 - правка
    If ActiveCell.Column = 23 Then
    MsgBox ("F2 нажали")    ' выполняем что надо перед режимом правка
    End If
Application.SendKeys "{F2}", True   ' входим в режим правка
End Sub

Visual Basic
1
2
3
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.OnKey "{F2}", "mymac"   ' после правки ячейки снова возвращаем команде F2 свое действие
End Sub
Добавлено через 5 минут
Цитата Сообщение от Sibkedr Посмотреть сообщение
ведь макрос должен запускаться, когда ячейка вошла в режим редактирования
а может достаточно запуска макроса после завершения правки??
и все что нужно, типа проверки введенных данных прописать в Private Sub Worksheet_SelectionChange(ByVal Target As Range) и с клавишей F2 не мучаться
почему именно ПЕРЕД двойным кликом ?
1
0 / 0 / 0
Регистрация: 24.07.2017
Сообщений: 1
24.07.2017, 10:44
чтоб все-таки режим проваливания по F2 остался

____
json formatter
0
0 / 0 / 0
Регистрация: 02.08.2016
Сообщений: 4
24.07.2017, 11:00  [ТС]
Цитата Сообщение от avporsk Посмотреть сообщение
наверное надо внести уточнение.. чтоб все-таки режим проваливания по F2 остался, потому как, по предыдущему варианту в режим правка по F2 не войти надо сделать примерно так:


Visual Basic
1
2
3
4
5
6
7
Public Sub mymac()
Application.OnKey "{F2}"        ' восстанавливаем действие по F2 - правка
    If ActiveCell.Column = 23 Then
    MsgBox ("F2 нажали")    ' выполняем что надо перед режимом правка
    End If
Application.SendKeys "{F2}", True   ' входим в режим правка
End Sub

Visual Basic
1
2
3
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.OnKey "{F2}", "mymac"   ' после правки ячейки снова возвращаем команде F2 свое действие
End Sub
Добавлено через 5 минут

а может достаточно запуска макроса после завершения правки??
и все что нужно, типа проверки введенных данных прописать в Private Sub Worksheet_SelectionChange(ByVal Target As Range) и с клавишей F2 не мучаться
почему именно ПЕРЕД двойным кликом ?
avporsk, спасибо, все заработало.
А правки-то быть и не должно в ячейке. У меня есть макрос, который вызывает календарь для выбора даты, чтобы эта дата записалась в ячейку.
Я и хотел чтобы те кто хочет вносить дату проваливаясь в ячейку - либо по двойному клику, либо по F2 - чтобы для них выскакивал календарь и они выбирали нужную дату. Ваше решение отлично работает, меня все устраивает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.07.2017, 11:00
Помогаю со студенческими работами здесь

Как запустить макрос
добрый вечер! помогите разобраться.. вот код (вроде написан правильно).. чтобы запустить его, нажимаю ф5.. вылезает окно с макросом, и есть...

как запустить макрос excel
Подскажите, как создать и выполнить макрос не открывая файла excel ? p.s. все действия происходят по нажатию кнопки

Как реализовать введение формулы в ячейку через макрос без знака доллара
Добрый день! Есть такая проблема... где-то нашел как можно вводить формулы, вот пример: Worksheets("list").Cells(Z,...

Как запустить макрос в Access из Excel?
Как запустить макрос в Access(на создание и добавление таблицы) из Excel?Заранее спасибо.

Как запустить макрос из окна Word
Пишу программы для зачёта в универ, через офис набираю alt+F11. Вопрос в том, как сделать так, чтобы при открытии листа word сразу...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru