Переменная для всей книги vba excel

Глобальная переменная в проекте VBA Excel. Объявление глобальной переменной в модуле проекта VBA и обращение к ней из других модулей того же проекта.

Объявление глобальной переменной

Глобальная переменная — это переменная, которая объявлена в одном из модулей проекта VBA и доступна для использования во всех остальных модулях.

Чтобы переменная стала глобальной, она должна быть объявлена в начале модуля перед первой процедурой (раздел Declarations) с помощью оператора Public. Этот способ работает во всех модулях проекта VBA Excel.

Допускается объявление глобальной переменной с помощью оператора Global, но такой способ считается устаревшим и на сайте разработчиков уже не упоминается. Объявить глобальную переменную с оператором Global можно только в стандартном модуле.

Пример объявления глобальных переменных в любом модуле проекта VBA:

Public myGlobVar1 ‘по умолчанию — As Variant

Public myGlobVar2 As String

Public myGlobVar3 As Double

Объявление глобальных переменных

Объявление глобальных переменных

Обращение к глобальной переменной

Примеры обращения к глобальной переменной, объявленной в разных типах модулей проекта VBA Excel. Актуально для обращения из модуля любого типа данного проекта.

Переменная в стандартном модуле

Если глобальная переменная (myGlobVar) объявлена в стандартном модуле (Module1) с уникальным именем, не повторяющимся в других модулях, к ней можно обращаться из других модулей по одному имени (в примере — из модуля формы):

Private Sub CommandButton1_Click()

    myGlobVar = «Глобальная переменная»

    TextBox1.Text = myGlobVar

End Sub

Стандартное обращение с указанием имени модуля (Module1), в котором объявлена глобальная переменная (myGlobVar):

Private Sub CommandButton1_Click()

    Module1.myGlobVar = «Глобальная переменная»

    TextBox1.Text = Module1.myGlobVar

End Sub

Переменная в модуле книги

Глобальная переменная (myGlobVar), объявленная в модуле книги, доступна при обращении к ней из других модулей с помощью следующего кода VBA Excel:

Sub Primer1()

    ThisWorkbook.myGlobVar = «Глобальная переменная»

    MsgBox ThisWorkbook.myGlobVar

End Sub

Переменная в модуле листа

Обращение к глобальной переменной (myGlobVar), объявленной в модуле рабочего листа (Лист1), из других модулей по имени листа (в проводнике проекта находится без скобок слева от имени ярлыка):

Sub Primer2()

    Лист1.myGlobVar = «Глобальная переменная»

    MsgBox Лист1.myGlobVar

End Sub

По имени ярлыка (в проводнике проекта находится в полукруглых скобках справа от имени листа):

Sub Primer3()

    Worksheets(«Лист1»).myGlobVar = «Глобальная переменная»

    MsgBox Worksheets(«Лист1»).myGlobVar

End Sub

Переменная в модуле формы

Глобальная переменная (myGlobVar), объявленная в модуле формы (UserForm1), доступна при обращении к ней из других модулей с помощью следующего кода VBA Excel:

Sub Primer4()

    UserForm1.myGlobVar = «Глобальная переменная»

    MsgBox UserForm1.myGlobVar

End Sub

Переменная в личной книге макросов

Обращение к глобальной переменной (myGlobVar), объявленной в модуле ЭтаКнига проекта VBAProject (PERSONAL.XLSB) из модуля проекта VBA обычной книги Excel:

Sub Primer5()

    Workbooks(«PERSONAL.XLSB»).myGlobVar = «Глобальная переменная»

    MsgBox Workbooks(«PERSONAL.XLSB»).myGlobVar

End Sub

Мне не удалось получить доступ из проекта VBA текущей книги Excel к глобальной переменной, объявленной в стандартном модуле личной книги макросов.


Всем привет.
Поискал по интернету, но не смог понять, как создать глобальную переменную? Такую переменную, которая будет читаться в любом месте программы, открытой Excel книге?

Я попытался создать переменную в «ЭтаКнига»
Workbook и open
Option Explicit

[vba]

Код

Public Version As String

Public Sub Workbook_Open()
Version = «Глобальная переменная»
End Sub

[/vba]

Но данный способ не работает. Когда я обращаюсь из модуля или формы к Version, то он пишет ошибку и говорит, переменная не объявлена.

Мне бы очень помогла такая переменная, которая бы обозначалась еще при запуске книги и далее, она бы сопровождала все действия пользователя.
Не зависимо открывает он форму, меняет лист или добавляет и т.д. Данная переменная всегда доступна для процессов в коде.

Спасибо.

 

Здравствуйте, уважаемые эксперты.

Нужно один раз объявить переменную (а можно и константу), присвоить ей значение и использовать во всех листах и модулях книги. До её закрытия.

1. Где её объявить ? В «Эта книга» ?
2. Как правильно ?

Сделал так, неверно.
Public ws As Worksheet
Set ws = ThisWorkbook.Worksheets(«ИмяЛиста»)

Пробовал еще всякие комбинации. Не нашел решения.
Заранее спасибо.

Изменено: Сергей Евдокимов11.04.2022 07:27:30

Компьютер никогда не заменит человека (©️ Hannibal Lecter)

 

Дмитрий(The_Prist) Щербаков

Пользователь

Сообщений: 14182
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#2

11.04.2022 07:37:27

Цитата
Сергей Евдокимов написал:
1. Где её объявить ? В «Эта книга» ?

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

Цитата
Сергей Евдокимов написал:
Пробовал еще всякие комбинации. Не нашел решения.

Что такое переменная и как правильно её объявить?

Изменено: Дмитрий(The_Prist) Щербаков11.04.2022 07:38:36

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

БМВ

Модератор

Сообщений: 21385
Регистрация: 28.12.2016

Excel 2013, 2016

#3

11.04.2022 07:42:46

Цитата
Сергей Евдокимов написал:
Нужно один раз объявить переменную (а можно и константу), присвоить ей значение и использовать во всех листах и модулях книги. До её закрытия.

1. Константа — Ей нельзя присвоить что-то сложновычисляемое, и ссылкой на объект она быть точно не может.
2. Публичная переменная — ну объявив в обычном модуле вы получите желаемое
3. А вот присвоив один раз и использовать до закрытия — плохая идея, которая в случае сброса , который приведет к обнулению всех переменных , приведет к ошибке. Просто ради эксперимента присвойте что-то , после введите END. Посмотрите то останется. От сюда вывод, в зависимости от задачи, может это допустимо а может лучше хранить что-то в сервисном листе.

Изменено: БМВ15.04.2022 17:40:14

По вопросам из тем форума, личку не читаю.

 

Общие сведения об области и видимости переменных VBA

Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!

 

Сергей Евдокимов

Пользователь

Сообщений: 442
Регистрация: 17.10.2013

(Win’11-Excel’21/365)

#5

11.04.2022 10:22:12

Дмитрий(The_Prist) Щербаков, Спасибо.
Нашел у вас ответ на первый свой вопрос.

Где объявлять глобальную переменную

Здесь у меня точно была ошибка.

Присваивать значение переменной можно только внутри процедуры ?

Цитата
БМВ написал:
Константа — … ссылкой на объект она быть не может.

Спасибо. Теперь буду знать.

Цитата
БМВ написал:
3. А вот присвоив один раз и использовать до закрытия — плохая идея

У меня получилось, что одно и то же 7 раз в разных процедурах присваиваю (Set ws = ThisWorkbook.Worksheets(«ИмяЛиста»))
Поэтому и задался вопросом. Разве так правильно ?

Изменено: Сергей Евдокимов11.04.2022 10:57:10

Компьютер никогда не заменит человека (©️ Hannibal Lecter)

 

Jack Famous

Пользователь

Сообщений: 10852
Регистрация: 07.11.2014

OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

#6

11.04.2022 10:25:21

Цитата
Сергей Евдокимов: Нашел у вас ответ на первый свой вопрос

вам прямо он был написан тут же первым ответом

Цитата
Дмитрий(The_Prist) Щербаков: в любом стандартном модуле. На событие открытия книги присваивать значение

Цитата
Сергей Евдокимов: Присваивать значение переменной можно только внутри процедуры ?

у вас за строку в VBA надо деньги платить? Попробуйте и узнаете — больше времени на вопрос потратили, чем на такую проверку. Если переменная НЕ КОНСТАНТА (которой присваивать значение можно только при объявлении) и переменная ВИДНА, то менять её значение МОЖНО.

Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

 

Сергей Евдокимов

Пользователь

Сообщений: 442
Регистрация: 17.10.2013

(Win’11-Excel’21/365)

#7

11.04.2022 10:41:39

Цитата
Jack Famous написал:
вам прямо он был написан тут же первым ответом

Да. Спасибо. Я просто не знал, что
Модуль — это стандартный модуль, а
Модуль книги — это НЕстандартный модуль

Дмитрий

внёс

ясность.

Изменено: Сергей Евдокимов11.04.2022 10:44:04

Компьютер никогда не заменит человека (©️ Hannibal Lecter)

 

БМВ

Модератор

Сообщений: 21385
Регистрация: 28.12.2016

Excel 2013, 2016

#8

11.04.2022 11:43:53

Цитата
Сергей Евдокимов написал:
Поэтому и задался вопросом. Разве так правильно ?

Смотря для чего вы и что делаете. Если это результат вычислений или параметрическая таблица, которая потом используется много раз в других процедурах, то это позволяет не заботится о передаче её в процедуры, ну и инициализировать один раз. Если например нужно зафиксировать лист , который был при открытии, то тоже можно, но  как я уже писал, при сбросе, переменная будет пустой что станет сюрпризом.
Кстати если много раз делается такое Set ws = ThisWorkbook.Worksheets(«ИмяЛиста»)
то скорее нужно прописать отдельную функцию, даже из одной строки, хоть это приведет к лишним строкам но в случае изменения ИмяЛиста это потребуется только в одном месте .

По вопросам из тем форума, личку не читаю.

 

или «ИмяЛиста» сделать глобальной константой

Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!

 

БМВ

Модератор

Сообщений: 21385
Регистрация: 28.12.2016

Excel 2013, 2016

#10

11.04.2022 12:58:30

Цитата
Ігор Гончаренко написал:
или «ИмяЛиста» сделать глобальной константой

Вполне применимо, но  вдруг еще и книгу менять, тогда ….

По вопросам из тем форума, личку не читаю.

This is a question about scope.

If you only want the variables to last the lifetime of the function, use Dim (short for Dimension) inside the function or sub to declare the variables:

Function AddSomeNumbers() As Integer
    Dim intA As Integer
    Dim intB As Integer
    intA = 2
    intB = 3
    AddSomeNumbers = intA + intB
End Function
'intA and intB are no longer available since the function ended

A global variable (as SLaks pointed out) is declared outside of the function using the Public keyword. This variable will be available during the life of your running application. In the case of Excel, this means the variables will be available as long as that particular Excel workbook is open.

Public intA As Integer
Private intB As Integer

Function AddSomeNumbers() As Integer
    intA = 2
    intB = 3
    AddSomeNumbers = intA + intB
End Function
'intA and intB are still both available.  However, because intA is public,  '
'it can also be referenced from code in other modules. Because intB is private,'
'it will be hidden from other modules.

You can also have variables that are only accessible within a particular module (or class) by declaring them with the Private keyword.

If you’re building a big application and feel a need to use global variables, I would recommend creating a separate module just for your global variables. This should help you keep track of them in one place.

глобальна переменная в excel

​Смотрите также​​ dD не объявлена.​ «Public» ? Речь​Public нужно на​
​_Boroda_​Sheets(«Save»).Range(«b» + LTrim$(Str$(z)))​
​ сказал (и как​это как?​ у Вас поубавится…​ Long Public Mes​При дебагере эта​: Если затем это​ эти вот строчки.​ = Sheets(1).OptionButton1 End​Roman777​ и т.д. Данная​: делаю макрос собирающий​Lendor​ Если не декларировано,​ идет о глобальной​ уровне проекта. На​: Немного поясню словами​ = Worksheets(«РСИ»).Cells(25, 14).Value​ я делал), то​2Korolana​

​The_Prist​​ As Long Public​ процедура вызывается, но​​ значение (100500) не​​ Хотелось бы в​
​ Sub2ой: Просто поменять​​:​ переменная всегда доступна​ статистику по листам​
​: уважаемые форумчане, помогите.​ то после выполнения​ переменно объявленной через​
​ уровне модуля достаточно​Даже если у​ ‘ зав. №​ мне придется очищать​У меня не​: На мой взгляд​ Srok As Long​

​ Srok все равно​​ менялось, то оно​ сааааамом начале проекта​ «Name», c «OptionButton1»​BaroVit​
​ для процессов в​ книги​ возникли проблемы с​
​ процедуры test1, последующее​ Dim. Вы же​

​ Dim z_ As​​ Вас модуля вообще​….​
​ ячейки перед сохранением.Кроме​ получается использовать Public​ это как раз​ Sub InitPublic() With​ empty после прохождения.​ так и останется​ его вычислить и​ на «op1». Ну​, простите) я сёдня​ коде.​и формирующий отчет​ объявленимем глобальной переменной.​ выполнение test2 выдаст​ использовали модификатор доступа.​

​ String.​​ нет, а весь​End Sub​ того,к переменным удобней​
​ уровня модулей книги​ тот случай, когда​ Worksheets(«Исходные Данные») God​Юрий М​ таким. И переменная​ вставлять по ходу​
​ тоже вариант.​ туплю, я спутал​
​Спасибо.​
​ на своем листе​объявляю глобальную переменную​ пустой MsgBox, т.к.​
​Hugo121​combat​
​ код где-то в​кто подскажет, где​
​ обращаться, чем к​
​ и листов во​
​ размер не имеет​
​ = .Range(«God») Mes​: А что у​ будет доступна в​

​ действа, когда нужен.​​Но хотелось, бы​

​ Вас с​​BaroVit​

​ в этой же​​ в отдельном модуле​ dD будет пуста.​: Материал из Википедии​

CyberForum.ru

Объявить глобальную переменную, для всей книге (Макросы/Sub)

​: Учел исправил. Если​​ других местах, Вам​
​ ошибка почему rrr​ ячейкам.​ всех модулях.​ значения​ = .Range(«Mes») Srok​ Вас в процедуре​ любом модуле.​С другой переменной,​
​ услышать(почитать), ваши варианты​lopuxi​
​: ЭтаКнига.Version​
​ книге(этот лист не​
​Public glob As​
​Сделайте тоже самое,​ — свободной энциклопедии​
​ заметили, у меня​
​ нужно его (модуль)​ для кода листа​
​А если объявлять​

​Это так должно​Ошибка-то явно в​ = God *​ InitPublic? Где она?​Обратите внимание: переменные​ тоже задающейся в​ решения, предложения, мнение​)))​
​RAN​ создаю, а каждый​ Integerона принимает определенное​ но объявите переменную​В программировании глобальной​ есть лист калибровка,​ создать и там​
​ «РСИ» не присваивается​ Public в листе​ быть или я​ объявлении, а не​ 12 + Mes​ И может есть​ God, Mes, Srok,​
​ самом начале, попробовал​

​ по данной ситуэйшине…​​Schumacher56​

​: Public переменные декларируются​​ раз очищаю).​ значение при выполнении​​ dD в любом​​ переменной называют переменную,​ нужен для подгонки​ написать одну строку​

​ значение 21 или​​ или книге,то не​ тупой?​
​ в самих кодах.​ End With End​
​ смысл показать небольшой​
​ i, j, N​
​ такую вот штуку:​
​Априори спасибо за​
​: Hi guys and​ в​
​как укоротить вот​

​ макроса по нажатию​ стандартном модуле. Поймете​ областью видимости которой​ 2-х линий на​
​ -​ 25 в зависимости​ пашет — так​И ещё. Может​

​ Поэтому даже большой​​ Sub​
​ файл, где всё​ будут иметь тип​ЦитатаConst StartDate As​ ответы, подсказки :-)​ ladys. Суть вопроса​стандартном​ такую запись:​ кнопки. далее данная​

​ того, что в​​ является вся программа…​ листе РСИ (в​200?’200px’:»+(this.scrollHeight+5)+’px’);»>Public rrr As Integer​ от условия в​
​ и задумано очевидно.Только​

​ подскажите как использовать​​ проект можно просмотреть​​не помогло -​​ это происходит?​ Variant.​ Date = Worksheets(«123»).Range(«StartDate»)​

​_shark​​ в следующем, как​модуле, а ЭтаКнига​RLN = «doc1″​

​ глобальная переменная должна​​ ThisDocument нельзя объявить​А слово Dim​ основном по высоте),​combat​ формы2​ в модуле.​ функцию из внешнего​
​ бегло только в​ в юзер форме​peat​P.S. Я глобальные​

​заругалась «constant expression​​: можно описать глобальную​​ создавать глобальные переменные​​ — это модуль​ActiveWorkbook.Worksheets(RLN). — каждый​ исползоваться еще в​​ глобальную переменную.​​ первым написали Вы​

excelworld.ru

Как создавать и инициализировать глобальные переменные?

​ почему то на​​: Что то я​RAN​Вообщем всем спасибо.Делайте​ проекта. Не доезжаю.​ нужных местах, не​ Srok = empty,​
​:​ всегда пишу каждую​
​ required». Найденные в​ переменную типа Control​ и тут же​ класса.​ раз при обращении​
​ одной процедуре, которая​А автор темы​Sn1p3rOk​ разных ПК, по​ все таки не​: Потому, что​
​ всё как написал(а)​sergmagunov​ ковыряясь в кодах.​ если call InitPublic​Юрий М,​
​ в отдельную строку.​ сети варианты с​ и присвоить ей​ их инициализировать?​lopuxi​
​ к листу-отчету​ запускается при нажатии​
​ не уточнял: Dim​: Вы немножко не​ разному рисует, вообще​ понимаю, или туплю,​Цитата​ Korolana (если конечно​: Приведи пример своего​peat​
​ — то не​видимо, она не​The_Prist​ Set… тоже успехом​
​ значение при инициализации​Глобальную переменную мы​: Вот это я​пытаюсь объявить переменную​ другой кнопки, но​
​ или Public. Он​ понимаете суть этой​ правильно ли я​ не знаю​combat, 22.11.2015 в​ значения вам нужно​
​ модуля, будет понятнее​:​
​ находит ее..​ там… Она в​: Вынесите присвоение переменным​ не увенчались.​ формы или открытии​
​ объявляем так:​ пишу в модуле.​ лист:​ в данной процедуре​ спрашивал про​ цитаты.​ все сделал, или​в вашем примере​
​ 11:32, в сообщении​ хранить​Korolana​The_Prist,​
​The_Prist​ самом верху модуля,​

​ значений в отдельную​​прошу вашей помощи,​ книги.​Public var As​Объявить переменную я​Dim ReportList as​ значение этой переменной​
​глобальные​И ещё раз​ же по др.​ глобальную переменную объявили​ № 1200?’200px’:»+(this.scrollHeight+5)+’px’);»>В исполняемом​только в оперативной​: It could be​да вот именно,​: Необходимо поместить в​ в котором бОльшая​
​ процедуру(скажем InitPublic). Затем​ знатоки!​Option Explicit Public​ StringОтлично, теперь строковая​ объявил.​ WorkSheet​

​ «Empty», несмотря на​​в module и​ повторюсь речь идет​
​ пути надо было​ в модуле, где​ коде формы объявил​ памяти).​ some reasons of​
​ что я не​ один стандартный модуль​ часть кода.​ при открытии книги​

CyberForum.ru

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

​у меня вся​​ obChoice As Control​ var видна во​200?’200px’:»+(this.scrollHeight+5)+’px’);»>​
​потом инициализирую:​ то что в​ ThisDocument. А Вы​ о глобальной переменной​ идти​ и прописали код,​ глобальную переменную rrr​combat​ your failure​ один раз объявлял​ — ЛЮБОЙ. СТАНДАРТНЫЙ.​Содержит в себе​ запускайте эту процедуру:​ эта байда во​ Private Sub Workbook_Open()​
​ всех модулях и​Option Explicit​
​RLN = «doc1″​ первой процедуре ее​ его в заблуждение​ в modul1 и​Какое отношение этот​ но я то​combat​: В исполняемом коде​First of all,​ ее в этих​Не проще было​ вот что:​
​Private Sub Workbook_Open()​ вкладке «Modules», где​ Set obChoice =​ процедурах.​
​Public VersionAs String​ReprtList=ActiveWorkbook.Worksheets(RLN)​
​ значение определено. Может​ вводите, не приводя​ в ThisDocument про​ вопрос имеет к​ не использую модуль​
​: Все равно не​ формы объявил глобальную​
​ check that your​ самых кодах и,​ уже выложить свой​Sub InitPublic() With​ Call InitPublic End​ у меня описание​ Sheets(1).OptionButton1 End Subпосле​1. А как​Public Function MyFunVer()​

​получаю рантайм ошибку​​ быть я неправильно​ доступные аргументы своей​ остальное речи нет.​ глобальным переменным?​прописал там переменную​ понял, все таки​ переменную rrr​ variable, declared as​ чистя их, нашел​ файл? 100% Вы​

​ Worksheets(«123») God =​​ Sub​​ всех кнопок, функции​​ этого можно обращаться​ её инициализировать, так​
​Version = «Глобальная​ 91. Как это​ ее объявляю или​ позиции, возводя все​То есть, допустим​VeX​ и то же​ как решить проблему,​
​200?’200px’:»+(this.scrollHeight+5)+’px’);»>Option Explicit​ public in module,​ понял в чем​
​ сами себе проблему​ .Range(«God») Mes =​Так же на​ и тп. Мб​ к методам OptionButton​ что бы сразу​ переменная»​ по человечески сделать?​ не там?​ в спор и​ это module1​: Скажите в чем​ самое​ что не так,​’​ is not declared​ ошибка)​

​ создали и саами​​ .Range(«Mes») Srok =​ всякий случай в​ куда в другое​ где угодно через​ у неё было​End Function​KoGG​
​ikki​ попытки доказать свою​Dim глобальнаяПеременная As​ разница объявления глобальных​может быть я​
​ не там объявил​Public rrr As​ in your sheet​

​мне казалось, скачивать​​ не понимаете что​ God * 12​ каждой процедуре, в​ место надо перенести​ obChoice, например, obChoice.Caption​
​ исходное какое либо​Мне всего то​: SET ReprtList=ActiveWorkbook.Worksheets(RLN)​
​: глобальные переменные должны​ позицию(неверные, судя по​ Integer Sub НекотораяПроцедура()​ переменных в module1​ не так объясняю,​RAN​
​ Integer​ as private.​ файл еще муторней)​
​ и куда Вы​ + Mes End​
​ которой переменная может​ объявление глобальных переменных/констант?​ и т.д.​ значение?​

​ нужно, задать ей​​sabrus​ быть объявлены в​ написанному).​ Dim локальнаяПеременная As​ или в ThisDocument?​ может быть весь​: Что такое переменная​Dim SRng As​Try it not​ В итоге, Вы​ пишите, что и​

​ With End Sub​​ понадобиться, можно делать​​Юрий М​​P.S. Пишу, в​Вообще конечно как​ параметр, который смогу​

​:​​стандартном​​VeX​​ Integer End SubЕстественно,​ и можно ли​ файл скинуть​ и как правильно​ Range ‘, InRng​ in your project,​ и помогли по​
​ приводит к некорректной​Вероятно, она не​
​ проверку:​: Где у Вас​ основном, под Corel’овским​ вариант, решения данной​
​ использовать везде.​KoGG​модуле.​: Последнее утверждение кстати​

​ если переменная объявлена​​ вообще там объявлять​после заполнения бланка​ её объявить?​ As Range​ but in any​ описанию​ работе.​

​ там висит. Если​​If Mes =​​ объявлены глобальные переменные?​​ VBA, но думаю,​ проблемы инициализировать и​Но переменная пуста.​: И еще там​не​
​ верно, т.к. у​Public переменная As​
​ переменные?​ и нажатия кн.​combat​Dim roww As​ “empty” project just​Legj​peat​
​ не в этом​ 0 Then Call​ Нужно в области​ что и в​ присвоить ей значение​

​ Как занести в​​ две разные переменные​в модуле листа​ меня тоже самое​ Integerто она будет​Sn1p3rOk​

​ Печать идет сохранение​​: То есть, я​ Long​ to learn.​: Проблема: есть макрос,один​: конечно, сам создал)​

​ дело, накрамсаю файл​​ InitPublic​ деклараций стандартного модуля.​ Excel’е всё так​ в событии:​ нее что ни​ ReportList и ReprtList.​ или модуле книге​ — переменные объявленные​ доступна во всех​: Там это где?​ вот здесь ругается,​ не там вставил​

​в этой форме​​Something like this:​ лист и собственно​ но с вашей​

​ для примера.​​Так же можете​​ Т.е. ПЕРЕД ними​​ же​Private Sub Workbook_Open()Вариант…​ будь?​lopuxi​
​ или модуле класса.​ в thisDocument не​
​ модулях​Глобальные переменный объявленные​ выскочит ошибка​200?’200px’:»+(this.scrollHeight+5)+’px’);»>Public rrr As Integer​ должен получить значения​In module:​ книга — нужно​ помощь сам и​Юрий М​ почитать про переменные:​ не должно никаких​Schumacher56​
​ Но может, есть​RAN​: Всем привет.​использовать глобальную переменную​ видны из стандартных​The_Prist​

​ в ThisDocument видны​​_Boroda_​нужно было вставить​Код200?’200px’:»+(this.scrollHeight+5)+’px’);»>Private Sub OptionButton1_Change()​
​Public sStr As​ где-то хранить числовые​ решил — в​: И процедура InitPublic​А то Вы​ процедур. А значения​: Ну да, всё​ возможность, как то​: Странный вопрос.​Поискал по интернету,​

​ можно использовать в​​ модулей => отсюда​: Не согласен. Скорее​ во всем документе,​: Давайте еще раз.​ в ЭтаКнига?​Frame1.Height = 150​ StringIn Sheet1:​ значения, используемые во​ другом модуле эта​ в модуле книги​

​ их объявляете неверно(Юрий​​ им присваивайте в​ тоже.​ иначе решить данную​Вы выложили код,​ но не смог​ любом модуле.​

​ и был вопрос​​ Вы не понимаете.​ то есть в​ В модуль1 сверху​предложенный ресурс почитал,​If OptionButton1.Value =​Private Sub Worksheet_BeforeDoubleClick(ByVal​ всех трех модулях,всё​ же переменная тоже​ на событие открытия?​ уже указал Вам​ процедуре, которая выполняется​Private Sub Workbook_Open()Согласен​ проблему?​ не содержащий ни​ понять, как создать​кроме того, программист​

​ можно ли в​​ Глобально — это​ module1, module2 и​ нужно дописать еще​ на мысль об​ True Then​ Target As Range,​ время пока книга​

​ объявлялась, как паблик,​​ Давайте лучше небольшой​ на это).​ самой первой.​ вариант через, обработчик​Вообще, данный вопрос​:D
​ единой ошибки. После​ глобальную переменную? Такую​ должен следить за​ thisDocument переменные объявлять​ значит везде, во​ т.д.​ одно объявление. Вот​ ошибке не на​

​rrr = 21​​ Cancel As Boolean)​​ открыта. Я сделал​​ в этом проблема​ пример…​Hugo​peat​ события открытия документа,​ возник из следующего:​ его выполнения переменная​ переменную, которая будет​
​ тем, чтобы случайно​ для всего документа?​ всем проекте. Еще​Глобальные переменные объявленные​ так​

planetaexcel.ru

Создание глобальных переменных в Excel

​ вел​​…​ sStr = ‘MyTest’​ ещё один лист​ и была)еще раз​The_Prist​: Ну и вместо​:​ пока, что наиболее​Вот в Excel​ Version принимает значение​ читаться в любом​ не переобъявить в​ Выходит что нельзя​ такие переменные называют​ в module1 видны​200?’200px’:»+(this.scrollHeight+5)+’px’);»>Public Slov() As String​Pelena​

​End Sub​​ End SubIn Sheet2:​ невидимый и в​ спасибо​: InitPublic должна быть​ integer пишите Long​Юрий М,​ самый подходящий вариант.​

​ на Лист1 я​​ «Глобальная переменная». И​ месте программы, открытой​ других модулях глобальную​pashulka​ объявленными на уровне​ только в module1.​Public Ind() As​: Цитата из статьи​Private Sub OptionButton2_Change()​Private Sub Worksheet_BeforeDoubleClick(ByVal​

​ его ячейках эти​​Юрий М​
​ расположена в стандартном​ — оно оправданнее​на самом верху,​
​Сильно, хочу услышать​
​ добавляю несколько объектов​
​ что вы хотите​ Excel книге?​ переменную на локальном​: Модуль ThisDocument​ проекта. А переменные,​
​VeX​ Long​ по ссылке​
​Frame1.Height = 150​ Target As Range,​ значения храню, но​: Не понимаю -​

​ модуле. Так же​​ в новых версиях​ да:​

​ мнения остальных??? Что​​ «OptionButton», «ListBox» и​ от нас?​Я попытался создать​
​ уровне.​Public openDate As​ объявленные оператором Dim​: Там я имел​Public rrr​RAN​If OptionButton2.Value =​
​ Cancel As Boolean)​ это не по-людски​ почему люди так​ как и объявление​ VBA, и кроме​
​перед ними ничего​
​ никто, так не​
​ т.п. Вот что​BaroVit​
​ переменную в «ЭтаКнига»​Catstail​ DateЛюбой стандартный модуль​ в области объявлений​ ввиду thisdocument​
​В остальном коде​: Вот уж воистину​ True Then​ Target.Value = sStr​ как-то. Можно ли​ упорно не желают​
​ Public переменных.​ того у Вас​ нет. Если в​
​ делает?​ бы не обращаться​: Я новичок в​Workbook и open​: — так переменную​

​Private Sub Test1()​​ модуля — называют​
​сомневался можно ли​ убрать все Код200?’200px’:»+(this.scrollHeight+5)+’px’);»>Dim​ — «Смотрю в​rrr = 25​ End SubAfter writing​ создать какие-нибудь общие​ показывать файлы-примеры?.. Давно​

​peat​​ с integer не​ первой процедуре Srok​peat​ к ним, я​ VBA. Эту задачу​
​Option Explicit​ Public там и​ ThisDocument.openDate = Date​ переменными модуля, т.к.​ там переменные объявлять​ rrr и наступит​ книгу, вижу …»​…​ this code,​
​ переменные, или массив​ бы получили правильный​: нашел проблему -​ будет работать на​ получит значение 100500,​: Доброго времени суток!​
​ делаю так:​ решаю так, как​200?’200px’:»+(this.scrollHeight+5)+’px’);»>​ не объявишь… Ошибка​ End Sub Private​
​ действуют они исключительно​Sn1p3rOk​

CyberForum.ru

Объявление глобальной переменной (Макросы/Sub)

​ счастье!​​Там и ссылочка​End If​go to Sheet1,​
​ или объект какой?​
​ ответ.​
​ у меня не​ весь лист (ругнётся​
​ то при любых​ Надеюсь на вашу​Set op1 =​
​ показал в примере.​Public Version As​

​ будет.​ Sub Test2() MsgBox​
​ в пределах того​
​: Можно.​
​Это называется «Не​ есть Что такое​
​End Sub​
​ DoubleClick in any​
​sergmagunov​
​peat​
​ один стандартный модуль.​
​ на LastRow (As​ дальнейших вызовов этой​
​ помощь)​
​ Sheets(1).OptionButton1и «играюсь» уже​
​Пример в файле​
​ String​
​Есть еще такой​ ThisDocument.openDate End Sub​ модуля, внутри которого​Hugo121​ спрашивайте «Почему?», просто​ модуль? Какие бывают​а вот здесь​ place, then,​: А можно более​
​: у меня достаточно​
​ При удалении других​
​ Integer)).​ переменной, ее значение​
​История такая -​
​ с «op1». Всё​Roman777​
​Public Sub Workbook_Open()​
​ стиль объявления (устаревший,​
​Hugo121​ объявлены.​: Тесты показывают что​ сделайте так». Ну​ модули?​
​ появляется ошибка, код​go to Sheet2,​ уточнить вопрос. Потому​
​ большой файл, в​
​ модулей глобальная переменная​
​peat​ будет равно 100500?​ в моем документе​ good.​:​Version = «Глобальная​ но работающий):​: Т.е. можно если​

​В модулях класса​​ оба утверждения ошибочны.​
​ такие правила объявления,​​combat​ на листе, ггг​ DoubleClick in any​ что можно сделать​ нем много кода.​

​ Srok спокойно работает​​:​провел эксперимент и​ куча листов и​Но, видимость данной​BaroVit​

​ переменная»​​Global x as​ очень хочется Спасибо,​ глобальные переменные вообще​

​Я в ThisDocument​​ так установили в​: Так у меня​​ показывает, что Empty​
​ place and this​ обыкновенную формулу используя​
​ он не сложный,​ в юзерформе. Надо​Юрий М, The_Prist, Hugo,​ ваши слова подтвердились)спасибо​

​ нудных формул. В​​ «op1» только в​, что-то Ваш пример​

​End Sub​​ integer​ pashulka.​ бессмысленны. Попробуйте в​:D
​ вообще пишу только​ МS.​ один код в​ Код200?’200px’:»+(this.scrollHeight+5)+’px’);»>Sheets(«Save»).Range(«a» + LTrim$(Str$(z)))​

​ cell will get​​ функции листа, где​ никуда не претендует,​ создать какой-то другой​спасибо Вам всем​ большое!​ самом начале вычисляется​ текущей процедуре «sub»,​ совсем не соотвествует​Но данный способ​Казанский​
​Но т.к. у​ ThisDocument объявить переменную​ макросы событий книги.​У меня тоже​
​ форме, а другой​ = Mid(Worksheets(«РСИ»).Cells(15, 1).Value,​ “MyTest” value​ данные будут формироваться​

​ но его много)​​ модуль? читал по​

​ большое! ценные советы​​возник другой вопрос​
​ кол-во временных интервалов.​ для новой приходится​ сообщению №4)))​ не работает. Когда​: Объявишь Только обращаться​ меня нет доверия​ As Public:​ Всё остальное в​ не влезло. Тоже​
​ на листе, переменную​

​ rrr, 999) ‘​​IgorTr​ накопительно.​ надо бОльшую часть​ вашей ссылке про​
​ не знающим vba)​ — пользователь открывает​ Надоело в каждой​ заново, прописывать:​Roman777​ я обращаюсь из​
​ к ней сложнее.​ макросам модуля книги​Public dD as​
​ стандартные модули!​ выкинул.​ я привязываю от​ наименование, тип, рег.​
​: 2Korolana​Korolana​ удалить, чтобы не​ модуи классов -​peat​

​ документ и выполняет​​ процедуре прописывать это.​Set op1 =​: Как было уже​ модуля или формы​Например, такой счетчик​
​ (кроме конечно событий​
​ DateЗатем создайте новый​Sn1p3rOk​
​RAN​

​ формы, где должно​ №​Я не очень​: Add to your​
​ мешала поиску проблему​ мне туда?​:​ процедуры не с​ Их кол-во задается​ Sheets(1).OptionButton1Поэтому от вас​
​ подсказано, в приложенном​ к Version, то​ изменений листа: ‘модуль​

​ книги) — были​​ стандартный модуль и​: Хочу послушать ваши​
​: Тяжела она, шапка​ присвоится к «rrr»​
​Код200?’200px’:»+(this.scrollHeight+5)+’px’);»>Sub CommandButton2_Click()​

​ то по-англицки читать​​ project module and​ — лениво немного)​
​The_Prist​

​The_Prist,​​ самой первой, а​
​ в начале и​ нужно, как вы​ файле выполнено.​
​ он пишет ошибку​ листа Лист1 Public​ глюки, то не​ запишите в нем​ доводы. Особенно по​

​ Мономаха.​​ либо значение 21​ActiveSheet.PrintOut​ умею, но мысль​ keep there everything​ и выкладывать как-то​: peat, Вы считаете​сделал, как вы​ последние 2, к​ не меняется. Вот​ решаете данную проблему?​BaroVit​ и говорит, переменная​ i As Integer​ вижу смысла объявлять​ две процедуры:​
​ поводу второго.​Листы выкинул, думал​ либо 25 для​

excelworld.ru

В чем разница объявления глобальных переменных в module или в ThisDocument?

​Dim z As​​ как-бы такая: нефига​ what you want.​ стремновато — диплом​ необходимым пустое сообщение​ описали. Весь код​ примеру. Но в​ код (я не​

​ Тут нужны ваши​​: В 4-м сообщении​
​ не объявлена.​ ‘модуль ЭтаКнига Private​ переменные там, а​Sub test1() dD​Hugo121​ без архива влезет.​
​ кода листа (РСИ),​ Variant​ объявлять глобально переменные​

​ If you declare​​ все ж таки)​ писать?​
​ в модулях прекрасно​ них этот самый​

​ прогер, так что​​ предложения, мнения, опыт…​

​ в коде нет​​Мне бы очень​ Sub Workbook_SheetChange(ByVal Sh​
​ не в стандартном​ = Date End​: Так по поводу​Не влезло.​модуль в общем​

​z = 1​​ на листах? Или​ your variables there​ хотя пока подготавливал​

​peat​​ понимает глобальную переменную,​ Srok используется. Каким​ это говнокод, вероятнее​У меня вот​ ошибок. Я показал,​ помогла такая переменная,​ As Object, ByVal​

​ модуле, что всегда​​ Sub Sub test2()​ второго вообще бесспорно​combat​ проекте есть но​While Sheets(«Save»).Range(«a» +​ как?​ as public, all​

​ файл к выкладыванию,​​:​ но вот код​
​ будет его значение?​ всего):​ пока такие варианты:​ как я из​
​ которая бы обозначалась​ Target As Range)​

​ гарантированно работает.​​ MsgBox dD End​ — глобальные (т.е.​: УФФФ, все заработало,​
​ он не использует​ LTrim$(Str$(z))) <> «»​Legj​ Sheets from your​ нашел ошибку)​The_Prist,​
​ в юзер форме​ Эксель как бы​
​Srok глобально объявлен​1ый здесь инициализировать​ разных модулей обращаюсь​ еще при запуске​ If Sh Is​
​pashulka​ SubПопробуйте их выполнить​ Public) объявленные в​ доходчиво теперь….​

​ эту переменную​​z = z + 1​: Korolana: Thank you​ project will see​Юрий М​нет, просто надо​ отказывается это делать.​ на заднем фоне​ как целое,​ публичную (и то​ к глобальной переменной,​ книги и далее,​ Лист1 Then Лист1.i​:​ и посмотрите на​ одном модуле -​СПАСИБО!!!​
​или я вообще​Wend​ very much.I have​ them​: Вам лениво готовить​
​ было его удалить​Вставил вот такую​ втихую выполнит процедуру,​ЦитатаPublic God, Mes,​ пока не проверял),​
​ объявленной в ЭтаКнига.​ она бы сопровождала​ = Лист1.i +​Hugo121​ результат. Если у​ видны во всех​RAN​ не в ту​Sheets(«Save»).Range(«a» + LTrim$(Str$(z)))​ made as you​IgorTr​ небольшой файл, а​ — не нашел​ штуку​ в которой Srok​ Srok As Integerпроблем​ что не очень​Как я понял​
​ все действия пользователя.​ 1 MsgBox Лист1.i​, это была не​ Вас декларировано объявление​ модулях и формах.​: Кстати, о Public.​ степь, как нужно?​
​ = Mid(Worksheets(«РСИ»).Cells(15, 1).Value,​ said and the​: 2sergmagunov​ нам не лениво​​ кнопки)​​If Srok =​ считается и возьмет​ с вызовом в​ нравится:​ из вопроса автора,​Не зависимо открывает​ End If End​ агитация ибо переменная​ переменных(Option Explicit) -​Sn1p3rOk​

​Public z_ As​​ не понимаюююююю​ rrr, 999) ‘​ code works now.​Вот я не​ искать Вашу ошибку​попробовал создать модуль​ Empty Or Srok​ верное значение или​ каждой процедуре не​Private Sub Workbook_Open()​ он именно это​ он форму, меняет​

​ Sub​​ Public/Global + стандартный​
​ то VBA сразу​: Где вы видите​
​ String в модуле​RAN​ наименование, тип, рег.​Serqmaqunov: Если делать​ понял ‘данные будут​

​ по описанию? С​​ класса, запихнул туда​ = 0 Then​ подставит 0?)​
​ было, но в​ Public op1 as​ и хочет сделать.​ лист или добавляет​sabrus​ модуль =​ заругается, что переменная​ в вопросе слово​ формы не нужно.​: Понажимайте кнопочки​ №​

​ так как ты​​ формироваться накопительно’​​ таким подходом помогающих​​Public God As​ Call InitPublic​Юрий М​ каждую приходится писать​

CyberForum.ru

​ Object Set op1​

Понравилась статья? Поделить с друзьями:
  • Перекодировать html в word
  • Переменная в диапазоне vba excel
  • Перекодировать csv в excel
  • Переменная vba excel примеры
  • Переключение таблиц в excel