Форум программистов, компьютерный форум, киберфорум
Наши страницы
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
Оксана33
1 / 1 / 0
Регистрация: 03.12.2014
Сообщений: 284
1

Как использовать одну переменную в разных модулях

04.07.2017, 13:20. Просмотров 2122. Ответов 11
Метки нет (Все метки)

Дорогие форумяне!
Есть макросы, имена которых добавлены в событие листа, но с одним проблема...
не работает только тот, который внутри события Worksheet_Change и ругается на переменную tr = Target.Row уже в модуле
ошибка "error 424 object required", то есть в модуле tr=Empty
это как то исправляется? я думала о глобальной переменной, но как то не получается.
Буду очень признательна!
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.07.2017, 13:20
Ответы с готовыми решениями:

Возможно ли использовать один массив в разных модулях?
Возможно ли использовать один массив в разных модулях? Количество элементов массива определяется...

Как использовать переменную Как Часть Диапазона в Excel ? ? ? ?
Знатоки, не кидайте в меня помидорами! Подскажите, как правильно вставить переменную в строку. ...

Как суммировать данные с разных книг Excel в одну таблицу
Уважаемы гуру VBA помогите новичку не провалить задание.:cry: Дело в том, что с разных отделов (...

Как таблицы на разных листах свести в одну таблицу VBA кодом
пример во вложении на листе "задание" сам файл

Как использовать одну переменную в двух модулях?
У меня есть несколько форм. Каждая из них связана через alt+f11 с другими формами. Нужна передавать...

11
Hugo121
6512 / 2558 / 461
Регистрация: 19.10.2012
Сообщений: 7,682
04.07.2017, 14:04 2
Ну глобальная и нужна. Остальное непонятно, покажите пример файла.
1
Оксана33
1 / 1 / 0
Регистрация: 03.12.2014
Сообщений: 284
05.07.2017, 10:54  [ТС] 3
Друзья! подозреваю, что неправильно сформулировала вопрос. вот пример...
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Private Sub Worksheet_Change(ByVal Target As Range)
 
'tr = Target.Row
'tc = Target.Column
'
'If Cells(tr, tc) <> Empty Then
'Cells(tr, tc).Interior.Color = rgbPink
'End If
 
Call test
 
End Sub
Visual Basic
1
2
3
4
5
6
7
8
9
10
Sub test()
 
tr = Target.Row
tc = Target.Column
 
If Cells(tr, tc) <> Empty Then
Cells(tr, tc).Interior.Color = rgbPink
End If
 
End Sub
0
Hugo121
6512 / 2558 / 461
Регистрация: 19.10.2012
Сообщений: 7,682
05.07.2017, 10:57 4
Покажите файл!
0
Оксана33
1 / 1 / 0
Регистрация: 03.12.2014
Сообщений: 284
05.07.2017, 11:16  [ТС] 5
вот прилагаю
0
Оксана33
1 / 1 / 0
Регистрация: 03.12.2014
Сообщений: 284
05.07.2017, 11:28  [ТС] 6
извиняюсь за задержку
target.xls
0
Hugo121
6512 / 2558 / 461
Регистрация: 19.10.2012
Сообщений: 7,682
05.07.2017, 11:29 7
Ладно, не нужен файл.
Объявление переменных tr и tc в модуль, задавать им значение в процедуре события.
0
Hugo121
6512 / 2558 / 461
Регистрация: 19.10.2012
Сообщений: 7,682
05.07.2017, 11:29 8
Ладно, не нужен файл.
Объявление переменных tr и tc в модуль, задавать им значение в процедуре события.
0
Оксана33
1 / 1 / 0
Регистрация: 03.12.2014
Сообщений: 284
05.07.2017, 17:29  [ТС] 9
Добавлено через 14 минут
Цитата Сообщение от Hugo121 Посмотреть сообщение
Объявление переменных tr и tc в модуль, задавать им значение в процедуре события.
спасибо огромное)) вы просто облегчили мне жизнь!

Добавлено через 3 минуты
теперь выходит Ambiguous name detected, поскольку в каждом модуле объявлена переменная tr
и чтобы этого небыло можно задавать разные переменные - возможно это избежать и как?
0
Hugo121
6512 / 2558 / 461
Регистрация: 19.10.2012
Сообщений: 7,682
05.07.2017, 17:48 10
Я написал так:
Объявление переменных tr и tc в модуль, задавать им значение в процедуре события.
Не нужно объявлять во всех модулях, тем более что их число безгранично...
P.S. файл гляну через пару часов дома.
1
Alex77755
10993 / 3449 / 593
Регистрация: 13.02.2009
Сообщений: 10,245
05.07.2017, 19:37 11
Лучший ответ Сообщение было отмечено Оксана33 как решение

Решение

Только в одном модуле объявите
Visual Basic
1
2
Option Explicit
Public tr
и больше ни в одной процедуре и ни в одном модуле не объявляйте
1
Оксана33
1 / 1 / 0
Регистрация: 03.12.2014
Сообщений: 284
05.07.2017, 20:28  [ТС] 12
ой спасибо)) всем премного благодарна!!!

Цитата Сообщение от Alex77755 Посмотреть сообщение
Только в одном модуле объявите
только тогда дошло

Добавлено через 1 минуту
Цитата Сообщение от Hugo121 Посмотреть сообщение
тем более что их число безгранично...
логично
0
05.07.2017, 20:28
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.07.2017, 20:28

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Как использовать одну и туже функцию в разных модулях?
Есть у меня функция выравнивания Align;, она должна использоваться в формах 1 и 2. В форме 1 , все...

Как использовать одну переменную в разных процессах?
Есть управляющая программа и программа клиент. Управляющая программа создаёт 4 клиентских...

Как (а можно ли) использовать одну переменную для разных типов? В хранимой процедуре
Добрый день. В хранимую процедуру передается как параметр имя некоторой таблицы: ...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.