Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.08.2011, 11:25   #1
Vja4eslav
Пользователь
 
Регистрация: 13.08.2011
Сообщений: 90
Вопрос Клик по ячейке макросом

Ещё раз здравствуйте!
Уважаемые профессионалы, хочу написать макрос (Excel 2003), который бы по клику по ячейке скрывал столбец. Но не знаю как описать в макросе сам клик по ячейке. Не могли бы Вы, пожалуйста, подсказать?
Vja4eslav вне форума Ответить с цитированием
Старый 15.08.2011, 11:31   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Клики разные бывают - левой кнопкой одинарный или двойной, правой кнопкой, колёсиком, и т.д.
Который вас интересует?

Код в модуле листа:

Код:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    ' двойной щелчок левой кнопкой на ячейке Target
    
End Sub

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    ' щелкнули правой кнопкой на ячейке Target
    
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    ' выделили диапазон Target

End Sub

Вот вам пример, где ДВОЙНОЙ ЩЕЛЧОК скрывает столбец, а клик ПРАВОЙ КНОПКОЙ - отображает столбец справа от щелкнутого:
Пример в файле: http://excelvba.ru/XL_Files/Sample__...__13-35-07.zip

Код:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    ' двойной щелчок левой кнопкой на ячейке Target
    Target.EntireColumn.Hidden = True    ' скрываем столбец
    Cancel = True
End Sub

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    ' щелкнули правой кнопкой на ячейке Target
    Target.Next.EntireColumn.Hidden = False    ' отображаем столбец справа
    Cancel = True
End Sub

Последний раз редактировалось EducatedFool; 15.08.2011 в 11:36.
EducatedFool вне форума Ответить с цитированием
Старый 15.08.2011, 11:36   #3
Vja4eslav
Пользователь
 
Регистрация: 13.08.2011
Сообщений: 90
По умолчанию

Один клик левой кнопкой мышки, типа:
If (клик ЛКМ) Then Columns("B:B").EntireColumn.Hidden = True
Это надо не в Private Sub использовать, а в Sub

Последний раз редактировалось Vja4eslav; 15.08.2011 в 11:41.
Vja4eslav вне форума Ответить с цитированием
Старый 15.08.2011, 11:45   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Клик обязательно на ячейке?
Добавьте кнопку на лист, да назначьте её макрос из одной строки...

Чтобы отловить одиночный клик по ячейке, используется событие Worksheet_SelectionChange
Правда, повторный клик по этой ячейке не отловится.

Цитата:
Это надо не в Private Sub использовать, а в Sub
Это почему же?
EducatedFool вне форума Ответить с цитированием
Старый 15.08.2011, 11:57   #5
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию Vja4eslav

Левый клик на ячейке, как известно, приводит к ее выделению.
То есть отследить левый клик проще всего по событию выделения ячейки.
Хотите сделать глиняный пулемет?
exceleved@yandex.ru Яндекс.Деньги: 410011500007619

Последний раз редактировалось Казанский; 15.08.2011 в 12:34.
Казанский вне форума Ответить с цитированием
Старый 15.08.2011, 12:28   #6
Vja4eslav
Пользователь
 
Регистрация: 13.08.2011
Сообщений: 90
По умолчанию

Уважаемый EducatedFool, Вы правы - это делается только в Private Sub.
Если я пишу: Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
' двойной щелчок левой кнопкой по ячейке Target
Columns("B:B").EntireColumn.Hidden = True 'скрываем стобец
Cancel = True
End Sub
То по двойному щелчку на ЛЮБОЙ ячейке скрывается Columns("B:B").
А как сделать, чтобы он скрывался только по двойному щелчку на ячейке B1 ?
Vja4eslav вне форума Ответить с цитированием
Старый 15.08.2011, 12:31   #7
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Уважаемый EducatedFool, Вы правы - это делается только в Private Sub.
Да без разницы - можно Private Sub сделать, можно просто Sub
Разницы в вашем случае нет.

Цитата:
А как сделать, чтобы он скрывался только по двойному щелчку на ячейке B1
Код:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    if target.address = [b1].address then    columns(2).Hidden = True: Cancel = True
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 15.08.2011, 12:40   #8
Vja4eslav
Пользователь
 
Регистрация: 13.08.2011
Сообщений: 90
Хорошо

Вот что значит профессионал! Спасибо Вам большое, EducatedFool, Вы мне за сегодня уже 2-й раз помогли
Vja4eslav вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
открытие нескольких книг одним макросом и закрытие книг другим макросом kursant95 Microsoft Office Excel 6 27.01.2011 16:54
программный клик mardocx JavaScript, Ajax 1 07.11.2010 21:02
реакция на клик по ячейке ShamanK Microsoft Office Excel 7 01.12.2009 00:04
Клик (задачка) Nells Помощь студентам 3 17.08.2009 18:30
Двойной клик Алежа Общие вопросы .NET 3 16.11.2008 23:20