Страницы: 1
RSS
Использование переменной из другого макроса
 
Всем привет !!! Есть два макроса. В первом задаёться переменная, как её исползовать во втором макросе?
 
Объявите её в стандартном модуле, как глобальную - Public
Public x as Long
Long - только для примера. Тип Ваш.
Объявлять её следует НЕ в процедуре, а в области деклараций - самой первой строкой.
 
Спасибо!!! Всё получилось!
 
а если у меня два разных модуля, в каждом из которых есть вызов макроса из 3его модуля,
для вызова которого используется одна и та же переменная - ???

если написать Public x (...) в обоих модулях - эксель ругается, что такая переменная уже объявлена.
 
отставить панику: если объявить переменную один раз в любом модуле
(например в том же модуле, из которого ты вызываешь функцию - в моём случае, из 3его)
- всё работает.
 
Цитата
RazorBaze написал: если написать Public x (...) в обоих модулях
ЧТО ТАКОЕ ПЕРЕМЕННАЯ И КАК ПРАВИЛЬНО ЕЁ ОБЪЯВИТЬ?
Согласие есть продукт при полном непротивлении сторон
 
Публичные переменнызанимают память с момента открытия книги и до закрытия.
Переменную можно передавать.
Код
Sub m1()
Dim i As Long
    i = 35
    Call m2(i)
End Sub

Sub m2(x As Long)
    MsgBox x * 2
End Sub
 
Добрый день.

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

Код
Sub colors()
colorx = RGB(123, 123, 123)
End Sub

Sub paint()
colors 
Range("A1").Interior.Color = colorx
End Sub

Заранее благодарю.  

При изменении переменной на public

Код
Public colorx As Long
colorx = RGB(123, 123, 123)

Sub paint()

Range("A1").Interior.Color = colorx
End Sub

эксель ругается:

Изменено: Павел - 11.07.2022 19:19:45
 
вариант1
Код
Public Const ColorX& = 8092539
Sub paint()
  Range("A1").Interior.Color = ColorX
End Sub


вариант2
Код
Function ColorX()
  ColorX = RGB(123, 123, 123)
End Function

Sub paint()
  Range("A1").Interior.Color = ColorX
End Sub

Вариант3 (как вы хотели)
Код
Public ColorX&

Function InitColorX()
  ColorX = RGB(123, 123, 123)
End Function
 
Sub paint()
  InitColorX
  Range("A1").Interior.Color = ColorX
End Sub
не валите только все 3 варианта в один модуль, они вместе не уживутся
Изменено: Ігор Гончаренко - 11.07.2022 19:49:52
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко, спасибо огромное за помощь!
Страницы: 1
Наверх