Перейти к содержимому
Наше приложение «Дешевые авиабилеты» в AppGallery >>

VBA Excel. Правильные имена переменных и процедур

    Правила наименования переменных, констант, процедур и аргументов пользовательских функций в VBA Excel. Использование суффиксов в именах переменных.

    Правильные имена в VBA Excel

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

    • Имя может состоять из букв, цифр и знака подчеркивания (_). Пробел, точка и другие специальные символы не допускаются, кроме шести символов-суффиксов для переменных.
    • Первым знаком имени должна быть буква. Длина имени ограничена 255 знаками.
    • Не следует использовать имена, совпадающие с именами встроенных функций, операторов, методов, свойств и констант VBA Excel.
    • Нельзя допускать повторения имен внутри одной области видимости (действия) переменных, например, внутри одной процедуры.

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

    Примеры имен

    Переменные: x, y, z, a1, a2, a3, summa, myRange, my_Currency;

    Подпрограммы: Primer1(), Raschet_Stazha(), SozdaniyeTablitsy();

    Функции с аргументом: СуммаПрописью(x As Double) As String, ПоследнийДеньМесяца(x As Date) As Date.

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

    Переменная Область действия Способ объявления
    Локальная отдельная процедура внутри процедуры с помощью оператора Dim или Static
    Модульная отдельный модуль перед первой процедурой в модуле с помощью оператора Dim или Private
    Глобальная все модули перед первой процедурой в модуле с помощью оператора Public

    Подробнее о глобальных переменных читайте в статье: VBA Excel. Глобальная переменная.

    Суффиксы в именах переменных

    Переменные в VBA Excel могут быть объявлены с одним из следующих типов данных: Byte, Boolean, Integer, Long, Single, Double, Currency, Date, String (для строк переменной или фиксированной длины), Object или Variant. Если при объявлении переменной тип данных не указан, по умолчанию присваивается тип Variant.

    Шесть типов данных имеют соответствующие им символы, которые можно использовать при объявлении переменных, добавляя их в конце имени как суффиксы. Переменная будет объявлена с соответствующим символу типом данных.

    Символы, назначенные типам данных:

    • % – Integer;
    • & – Long;
    • ! – Single;
    • # – Double;
    • @ – Currency;
    • $ – String.

    Примеры объявления переменных

    Пример 1

    Объявление переменных с указанием типа данных с помощью оператора Dim и суффиксов:

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

    Пример 2

    Объявление переменных без оператора Dim (Static, Public).

    Если в модуле не используются операторы Option Explicit и Dim (Static, Public), то суффиксы являются единственным способом назначить переменной тип данных. То, что суффиксы работают и в этом случае, проверим на следующей процедуре:

    Указываем с помощью суффикса $, что переменная a является строковой, и ставим паузу на операторе End Sub. Запускаем процедуру:

    На изображении видно, что переменной a присвоен тип данных String (окно Locals). Теперь запускаем ту же процедуру, но с переменной без суффикса:

    Как и ожидалось, переменной a присвоен тип данных по умолчанию – Variant. Через косую черту указан тип данных, который VBA Excel идентифицировал у содержимого переменной a.

    Пример 3

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

    Вариант 1

    Объявление глобальной переменной myGlobalModule в стандартном модуле Module1:

    Обращение к переменной myGlobalModule из модуля листа и книги:

    Вариант 2

    Объявление глобальной переменной myGlobalSheet в модуле листа Лист1:

    Обращение к переменной myGlobalSheet из стандартного модуля и модуля книги:

    Вариант 3

    Объявление глобальной переменной myGlobalBook в модуле книги ЭтаКнига:

    Обращение к переменной myGlobalBook из стандартного модуля и модуля листа:


    Фразы для контекстного поиска: имя переменной, имя процедуры, правильное имя, переменная с суффиксом.


    Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.

    12 комментариев для “VBA Excel. Правильные имена переменных и процедур”

    1. Здравствуйте!
      Я всегда был уверен, что суффиксы нужны
      только для того чтобы определить их тип изначально (после dim)
      т.е. если я пишу dim i%
      то это равнозначно dim i as integer
      и мне больше не нужно употреблять суффикс в коде каждый раз:
      i%=111
      А тут я встретил на просторах интернета макрос для транслитерации,
      где суффиксы используются при каждом использовании переменных:

      Какой смысл имеет использование суффиксов
      в именах переменных уже в самом коде?
      Или это как раз плата за отсутствие dim и выключенный Option explicit?
      Спасибо!

      1. Евгений

        Добрый вечер!
        Суффикс можно указать один раз для назначения переменной типа данных, в том числе и без оператора Dim. Я добавил информацию об этом в параграф «Примеры объявления переменных».

      1. Евгений

        Привет, Рустем!
        Функция StrConv изменяет регистр букв. Во втором примере она все буквенные символы исходной строки преобразует в верхний регистр.

    2. Где объявить глобальную переменную, если она используется и «ЭтаКнига», и в макросе на листе при обработке события, и в модуле макроса? Если объявляю в одном месте, то ругается, что в другом переменная не описана. Если объявляю во всех местах, то значение переменной не передаётся

      1. Евгений

        Привет, Сергей!
        Допустим, вы объявили глобальную переменную в стандартном модуле Module1:
        Public myGlobal As Variant,
        тогда обращайтесь к ней из модулей листа и книги так:
        Module1.myGlobal

    3. Александр

      Имя пользовательской функции не может быть короче 5 символов (на латинице), на кириллице может быть короче.

      1. Евгений

        Добрый день, Александр!
        Решил сегодня проверить ваше утверждение. У меня функции с именами короче 5 символов работают:

        Проверьте у себя.

    4. здравствуйте
      Если вопрос не по теме — просьба перенести в соответствующий раздел.
      На рабочем Листе есть фигуры/картинки/фотографии…
      которым присвоены свои имена («Прямоугольник 1», «Рисунок 2″…)
      при копировании (внутри листа) они получают новые имена (фигура 12; рисунок 4 …)
      У меня 2-а вопроса:
      1) как макросом определить наименование картинки которая расположена в диапазоне D3:F5 ?
      2) при изменении размера, встроенный компилятор показывает код:

      какой написать код , чтобы машина выполняла действия ( изменение размера) без Selection ?

    5. Татьяна

      Добрый день, в примере 2 показано как посмотреть тип переменной. А как открыть это нижнее окошко в котором тип пишется?

      1. Евгений

        Здравствуйте, Татьяна!
        Окно Locals открывается через главное меню: View > Locals Window.

    Обсуждение закрыто.