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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.01.2012, 17:40   #1
Debauchee
Пользователь
 
Регистрация: 28.12.2011
Сообщений: 41
По умолчанию Запуск макроса по клику в любой таблице

Пожалуйста, посоветуйте как запускать макрос по клику из любой таблицы.

Макрос должен запускаться если кликнули только по 6-й колонке, начиная со 2-й строки, и только если в выбранной ячейке есть какое-то значение (кроме пробелов).

Нашел на этом форуме такое решение:
Код:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    If Target.Column <> 6 Then Exit Sub
    If Target.Row = 1 Then Exit Sub
    If Trim(Target.Value) = "" Then Exit Sub

    ' это пример. тут будет вызываться макрос из модуля книги
    MsgBox "Попали куда надо : " & Target.Column & " : " & Target.Row & " : " & Target.Value

End Sub
Все замечательно работает, но только для того листа, в модуль которого вставлен этот макрос.
Как сделать так, чтобы он работал в любом листе, за исключением первого (например, "Лист1")?

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

Спасибо за помощь!
Debauchee вне форума Ответить с цитированием
Старый 10.01.2012, 18:42   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Вставьте код в модуль ЭтаКнига:


Код:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
' этот макрос запустится при выделении любой ячейки на любом листе текущей книги


    If Sh.Name = "лист1" Then Exit Sub ' кроме листа с именем "лист1"
    If Target.Column <> 6 Or Target.Row = 1 Then Exit Sub
    If Target.Count > 1 Then Exit Sub ' если выделено больше одной ячейки
    
    If Trim(Target.Value) = "" Then МойМакрос ' если ячейка непустая, запускаем макрос
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 10.01.2012, 20:46   #3
Debauchee
Пользователь
 
Регистрация: 28.12.2011
Сообщений: 41
По умолчанию

Спасибо, EducatedFool!

Почему-то Ваш макрос заработал только после переоткрытия книги...

Если не сложно уточните, как вызвать МойМакрос с передачей ему параметров, т.к. ругается на
If Trim(Target.Value) = "" Then МойМакрос(Target.Column, Target.Row, Target.Value)
Debauchee вне форума Ответить с цитированием
Старый 11.01.2012, 07:55   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
как вызвать МойМакрос с передачей ему параметров
как я вам могу помочь, если я не видел вашего макроса...
покажите код - подскажем

PS: Проще в макрос передать ячейку Target (один параметр вместо трех),
а в вашем макросе уже получать характеристики ячейки (номер столбца, значение, и т.д.)
EducatedFool вне форума Ответить с цитированием
Старый 13.01.2012, 01:14   #5
Debauchee
Пользователь
 
Регистрация: 28.12.2011
Сообщений: 41
По умолчанию

Это не принципиально.
Допустим, что макрос содержит просто MsgBox
Код:
Sub МойМакрос(c As Integer, r As Integer, v As String)
    MsgBox "Попали куда надо: " & c & " : " & r & " : " & v
End Sub
тогда при вызове
МойМакрос(Target.Column, Target.Row, Target.Value)
макрос должен выводить MsgBox с сообщением, например, "Попали куда надо : 6 : 3 : что-то"

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

Пожалуйста, посоветуйте хороший справочник по VBA для Excel!

Последний раз редактировалось Debauchee; 13.01.2012 в 02:18.
Debauchee вне форума Ответить с цитированием
Старый 13.01.2012, 03:03   #6
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

слова EducatedFool воплощены в файле
Вложения
Тип файла: rar передать ячейку Target.rar (8.6 Кб, 101 просмотров)
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запуск макроса kaa1977 Microsoft Office Excel 5 12.04.2011 10:44
Запуск программы по двойному клику на файл! SoftKoc Общие вопросы Delphi 15 04.12.2009 22:53
URL-ссылки в таблице: как по клику не переходить по ним? maestrorex Microsoft Office Excel 4 29.06.2009 21:32
Запуск программы WinWord по клику кнопки lalilulelo Помощь студентам 3 03.06.2009 17:41
Запуск макроса с параметрами из другого макроса Saladin Microsoft Office Excel 2 19.01.2009 09:43