Foreversoft.ru

IT Справочник
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Vba excel глобальные переменные

Vba excel глобальные переменные

Модератор форума: _Boroda_, Manyasha, SLAVICK, китин
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Объявить глобальную переменную, для всей книге (Макросы/Sub)

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

lopuxiДата: Пятница, 23.10.2015, 16:24 | Сообщение № 1

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

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

200?’200px’:»+(this.scrollHeight+5)+’px’);»>
Public Version As String

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

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

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

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

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

200?’200px’:»+(this.scrollHeight+5)+’px’);»>
Public Version As String

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

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

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

О_о . и так можно было?

Ответить

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

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

200?’200px’:»+(this.scrollHeight+5)+’px’);»>
Public Version As String

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

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

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

Спасибо. Автор — lopuxi
Дата добавления — 23.10.2015 в 16:24

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

Visual Basic
16.02.2013, 22:00

Excel 2003. Глобальная переменная = 0 в Worksheet_SelectionChange
Excel 2003. в Модуле1 объявлена глобальная переменная Public qqq As Byte и в дальнейшем ей.

Переменная в качестве последней строки диапазона в Excel
Добрый день Есть код. Нужно в последнюю строку диапазона в методе Hyperlnking вместо указанного.

Как проверить открыта ли книга если ей задана переменная (excel 2010)
При заданном условии (А, В, С) должна открыться определенная книга, задача проверить открыта ли она.

16.02.2013, 22:112

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

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

17.02.2013, 06:553

Решение

— так переменную Public там и не объявишь. Ошибка будет.

Есть еще такой стиль объявления (устаревший, но работающий):

Visual Basic
17.02.2013, 10:334

Решение

Visual Basic
17.10.2013, 16:455

делаю макрос собирающий статистику по листам книги
и формирующий отчет на своем листе в этой же книге(этот лист не создаю, а каждый раз очищаю).
как укоротить вот такую запись:
RLN = «doc1»
ActiveWorkbook.Worksheets(RLN). — каждый раз при обращении к листу-отчету

пытаюсь объявить переменную лист:
Dim ReportList as WorkSheet
потом инициализирую:
RLN = «doc1»
ReprtList=ActiveWorkbook.Worksheets(RLN)

получаю рантайм ошибку 91. Как это по человечески сделать?

17.10.2013, 16:506
Visual Basic
17.10.2013, 16:597

17.10.2013, 17:048
17.10.2013, 17:04
17.10.2013, 17:04

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

Переменная=Документ.имя. Сделать выборку всех документов с именем Переменная
Привет всем. У меня есть проблема и варианты решения, но они не работают. Проблема вот такая.

Проблема с Adodc: ‘Переменная объекта или переменная блока With не задана’
В свойствах самого контрола (MS ADO Data Control) проверка подключения к атблице (подключаюсь через.

Модульная переменная или блочная статическая переменная: что лучше
Переменная (тип String) нужна на всем протяжении работы программы. Нужен совет опытных — что.

Глобальная переменная определена в хидере. Компилятор ругается на то, что переменная переопределена несколько раз
Исходники: /* main.cpp */ #include «hider.h» int main(void) < return 0; >/* foo.cpp */

Урок 5 по VBA — Объявление локальных и глобальных переменных

В данной статье мы рассмотрим работу с локальными и глобальными переменными VBA языка, а именно: как ведут себя переменные, объявленные в блоке модуля и в блоке отдельной процедуры; познакомимся с ключевыми словами Public, Private и Static; Определим логику назначении типов данных при объявлении нескольких переменных в одной строке; напишем парочку примеров.

В прошлых статьях мы кратко рассмотрели переменные и типы данных, теперь настало время более подробно вникнуть во все тонкости…

Объявление нескольких переменных VBA

Рассмотрим такой пример: надо объявить три переменные разного типа, например, Byte, String и Long, это может выглядеть так:

Но вот что делать, если все три переменные должны быть одного типа, такой код будет неверен:

Тут A и В будут типа Variant и только C – Long. Что бы все правильно сработало, нам нужно каждой переменной назначить заданный тип:

Объявление переменных в VBA локальной и глобальной видимости

Если переменная VBA объявлена в начале модуля, то она сохраняется в памяти до тех пор, пока работает макрос, если объявление происходит в теле процедуры, то переменная будет удалена из памяти сразу, после выполнения блока кода заданной процедуры. Добавьте в редакторе Visual Basic новую форму и модуль.

Параметры формы: разместите на форме три компонента Label и три кнопки, как показано на рисунке. Имя формы (свойство Name) – VariableForm, имя модуля – VariableModule.

В редакторе кода для модуля пропишите:

Тут мы просто определяем, что при запуске макроса нужно запустить форму.

В редакторе кода для формы пропишите:

В самом начале мы объявляем глобальную переменную VBA – GVar типа Integer, в комментарии указано, что вне процедуры присвоить значение переменной нельзя. Далее следуют три процедуры, в первой процедуре происходит увеличение значение глобальной GVar на 5, результат будет записываться в свойство Caption первого компонента Label. Вторя и третья процедуры производят аналогичные действия, только для объявленных в них локальных переменных VBA, LVar, происходит увеличение значения на 2 и на 3, соответственно. События Click (нажатие кнопки мыши) для кнопок будет вызывать заданные процедуры.

При запуске макроса в полях будут отображаться значения 5, 2 и 3. При нажатии на “Кнопка 1” будет происходить вызов процедуры GetGlobal и увеличение значения переменной GVar на 5. Для “Кнопка 2” и “Кнопка 3” будут вызываться процедуры GetLocal_1 и GetLocal_2, однако ничего увеличиваться не будет, так как переменные LVar являются локальными и при каждом вызове заданных процедур их значение будет обнуляться.

Ключевые слова Private, Public и Static

Private – аналогично ключевому слову Dim, использование Private вместо Dim актуально в том случае, если вы хотите, что бы данное ключевое слово напоминало о том, что переменная доступна только в пределах данной процедуры или функции.

Public – позволяет сделать переменную VBA доступной из любой части проекта, однако, это будет актуальным лишь в том случае, если объявление переменных в VBA происходит в разделе Declarations (Объявления) самого модуля. Если же вы пропишите Public вместо Dim в теле процедуры, то видимость все ровно будет доступна только в данной процедуре.

Static – данное ключевое слово актуально использовать вместо Dim тогда, когда нужно сохранять значение переменной в теле процедуры. Для примера, мы перепишем предыдущий код таким образом:

Мы просто изменили ключевое слово Dim на Static, и теперь переменные LVar не будут удаляться из памяти после выполнения процедур. Объявление переменных в VBA. Обратите внимание, что мы объявили переменные с одним именем, это можно, так как они находятся в отдельных процедурах.

Спасибо за внимание. Автор блога Владимир Баталий

Канал в Telegram

Вы здесь

Область действия (видимости) переменных в VBA

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

  • Процедура (Функция) — переменная действует только в процедуре или функции. Описание переменной начинается с ключевого слова Dim или Static непосредственно в самой процедуре или функции.
  • Модуль — переменная действует только в рамках текущего модуля (в котором описана) и доступна для всех процедур и функций, описанных в этом модуле. Переменная объявляется перед первой процедурой или функцией в модуле (если включено обязательное объявление переменных, то после ключевых слов «Option Explicit«). Описание переменной начинается с ключевого слова Dim или Private.
  • Все модули — переменная действует во всех модулях и доступна для любой процедуры и функции всего проекта. Описание переменной может быть в любом модуле проекта и начинаться перед первой процедурой или функцией с ключевого слова Public.

Локальные переменные — это переменные, объявленные в процедуре или функции. Локальные переменные могут использоваться только в процедуре (функции) в которой они объявлены. После завершения выполнения процедуры (функции) переменная освобождается из памяти.

Примечание: Если есть необходимость сохранить результат переменной, то можно воспользоваться «модульной переменной» или глобальной, передав в нее значение. Но в VBA доступен еще один вариант, переменная Static. Переменные, объявленные после ключевого слова Static, сохраняют свое значение по завершении работы процедуры или функции. Только будьте внимательны т.к. если упустить тот момент, что переменные Static сохраняют свое значение, можно получить неверные результаты выполнения процедур и ломать долго голову, в чем причина. Переменные Static объявляются только в процедурах и функциях!

Глобальные переменные — соответственно, доступны из любого модуля, видны в любой процедуре или функции и хранят результат до завершения выполнения всей программы.

Ну и теперь примеры описания глобальных, локальных переменных:

Option Explicit
‘Переменные a и x доступны для любой процедуры или функции
‘текущего модуля
Dim a as long
Private x as string

‘Переменная Y является глобальной и доступна любой процедуре проекта
Public Y as integer

Sub Test ()
‘а1 является локальной переменной
‘и доступна в пределах процедуры Test
Dim a1 as long

‘XY -статическая переменная, доступная в пределах
‘процедуры Test, но сохраняющая результат по ее завершении.
Static XY as string
.
end sub

Читать еще:  Активные листы в excel
Ссылка на основную публикацию
Adblock
detector