3.3 Переменные и типы данных
Переменные VBA, объявление переменных, Option Explicit, правила именования, типы данных VBA, исходные значения переменных
Переменные — контейнеры для хранения изменяемых данных. Без них не обходится практически ни одна программа. Для простоты переменную можно сравнить с номерком в гардеробе — вы сдаете в «гардероб» какие-то данные, в ответ вам выдается номерок. Когда вам опять потребовались эти данные, вы «предъявляете номерок» и получаете их. Пример работы с переменными в VBA может выглядеть так:
Dim nMyAge As Integer
nMyAge = nMyAge + 10
Перед работой с переменной настоятельно рекомендуется ее объявить. Объявление переменной в нашем примере выглядит так:
Dim nMyAge As Integer
Как расшифровать эту строку:
Dim — это область видимости переменной. В VBA предусмотрено 4 ключевых слова для определения области видимости переменных:
Static nVar1 As Integer
Если нет никаких особых требований, то есть смысл всегда выбирать область видимости Dim.
Второе слово в нашем объявление (nMyAge) — это идентификатор (проще говоря, имя) переменной. Правила выбора имен в VBA едины для многих элементов (переменные, константы, функции и процедуры и т.п.). Имя:
При создании программ VBA настоятельно рекомендуется определиться с правилами, по которым будут присваиваться имена объектам — соглашение об именовании. Чаще всего используется так называемое венгерское соглашение (в честь одного из программистов Microsoft, Charles Simonyi, венгра по национальности):
Многие программисты используют такой подход для обозначения констант и сейчас (но использование ключевого слова Const теперь обязательно — об этом будет рассказано в следующем разделе).
Третья часть нашего объявления — As Integer — это указание на тип данных нашей переменной. Тип данных определяет, данные какого вида можно будет хранить в нашей переменной.
В VBA предусмотрены следующие типы данных:
Внимание! Попытка объявить переменную с типом Decimal (например, Dim n As Decimal) приведет к синтаксической ошибке. Чтобы получить возможность работать с типом Decimal, переменную нужно изначально объявить как Variant или вообще объявить без типа (Dim n), поскольку тип данных Variant используется в VBA по умолчанию.
Можно еще использовать пользовательские типы данных, но их вначале нужно определить при помощи выражения Type. Обычно пользовательские типы данных используются как дополнительное средство проверки вводимых пользователем значений (классический пример — почтовый индекс).
Некоторые моменты, связанные с выбором типов данных для переменных:
Такой подход является устаревшим и к использованию не рекомендуется.
При объявлении переменных можно и не указывать ее тип. Например, наше объявление может выглядеть так:
В этом случае переменная будет автоматически объявлена с типом Variant.
В принципе, в VBA можно работать и без объявления переменных. Например, такой код
будет вполне работоспособным. Если мы используем переменную в программе без ее объявления, то будет автоматически создана новая переменная типа Variant. Однако объявлять переменные нужно обязательно! И при этом желательно явно указывать нужный тип данных. Почему:
Dim oWbk As Workbook
Set oWbk = Workbooks.Add()
Set oWbk = Workbooks.Add()
Но подсказка по свойствам и методам объекта oWbk будет работать только во втором случае.
Все опытные разработчики вообще запрещают использование переменных без явного их объявления. Для этого можно воспользоваться специальной командой компилятора (она помещается только в раздел объявлений модуля)
Проиллюстрировать, зачем они это делают, можно на простом примере:
С виду код не должен вызывать никаких проблем и просто выводить в окне сообщения единицу. На самом деле он выведет пустое окно сообщения. Причина спрятана очень коварно: в третьей строке n — это вовсе не английская буква N, а русская П. На вид в окне редактора кода отличить их очень сложно. В то же время компилятор VBA, встретив такой код, просто создаст новую переменную с типом данных Variant, у которой будет пустое значение. На выявление такой ошибки может потребоваться определенное время.
Хорошее правило — объявлять переменные заблаговременно, а не когда они потребовались. Это позволяет сделать программу более читаемой и четко спланированной.
Можно объявить несколько переменных в одной строке, например, так:
Dim n1 As Integer, s1 As String
Присвоение значений переменным выглядит так:
Если нужно увеличить уже существующее значение переменной, то команда может выглядеть так:
В обоих примерах знак равенства означает не «равно», а присвоить.
При присвоении значений переменным нужно помнить о следующем:
Обратите внимание, что при присвоении значения даты/времени таким «явным способом» нам придется использовать принятые в США стандарты: 05 в данном случае — это месяц, 06 — день. Отображение же этого значения (например, в окне сообщения) будет зависеть от региональных настроек на компьютере пользователя.
Если нужно передать шестнадцатеричное значение, то перед ним ставятся символы &H:
Что содержится в переменных до присвоения им значений?
VBA Dim
Excel VBA Dim
DIM в VBA можно назвать, так как он объявляет переменную в различных типах данных, таких как целочисленная логическая строка или double и т. Д. В любом языке программирования переменная должна быть объявлена определенному типу данных, например, X является переменной, и если мы определяем X как целое число, которое означает, что мы можем хранить целочисленные значения в X. Теперь, если мы объявим Y как строку, это означает, что мы можем хранить строковые значения в Y.
Как обсуждалось выше, DIM в VBA используется для объявления переменных разных типов данных. Но что такое DIM в VBA? DIM означает измерение или объявить в памяти в VBA. Мы объявляем переменную для определенного типа данных в VBA, мы используем ключевое слово DIM, чтобы сделать это. Мы можем использовать структуры классов, уже встроенные в VBA, или сами можем создать новую. Чтобы дать очень простое объяснение DIM, мы можем взять это в качестве примера, например, нам нужно хранить логические значения в переменной. Логические значения означают, что они либо истинны, либо ложны. Теперь логические значения, как мы знаем, являются логическими в типах данных, поэтому нам нужно объявить нашу переменную в логическом типе данных.
Если мы говорим, что переменная X должна хранить значение в логическом значении, нам нужно объявить X как логическую переменную, чтобы она могла хранить желаемый тип данных.
Использование DIM с синтаксисом в VBA выглядит следующим образом:
Переменная DIM As DataType.
Когда мы пытаемся определить конкретный тип данных, Excel предварительно вводит его для нас.
Посмотрите на скриншот ниже,
Excel определяет по ключевым словам, которые мы вводим, и отображает возможные типы данных, которые мы могли бы использовать.
Как использовать VBA Dim в Excel?
Мы научимся использовать VBA Dim на нескольких примерах в Excel.
Во-первых, давайте использовать Integer в качестве типа данных для объявления. Мы будем использовать три переменные и объявим каждую из них как целые числа, используя ключевое слово DIM. И тогда мы будем отображать окончательный результат.
Подсказка. Чтобы использовать VBA в Excel, нам нужно включить доступ для разработчиков с помощью учетной записи на вкладке «Файл».
Шаг 1. Перейдите на вкладку « Разработчик » и щелкните Visual Basic, чтобы открыть редактор VBA.
Шаг 2: В окне проекта нажмите на лист 1, чтобы открыть окно кода.
Шаг 3: Когда откроется окно кода, чтобы объявить подфункцию, чтобы начать писать код.
Шаг 4: Объявите три переменные A, B и C как целые числа.
Шаг 5: присвойте этим трем переменным любые случайные значения.
Шаг 6: Показать значения C с помощью функции msgbox.
Шаг 7: Запустите код с помощью кнопки запуска. Как только мы запустим код, мы получим следующий результат в качестве вывода.
Шаг 8: Поскольку A, B и C были объявлены как целое число, а сумма A и B также является целым числом, может отображаться значение, сохраненное в C. Но если мы изменим значение C = A / B, как показано на скриншоте ниже.
Шаг 9: Теперь давайте снова запустим код и посмотрим, что мы получим в результате,
В результате мы получаем ноль, но 5/10 равен 0, 5, а не 0. Это потому, что C может хранить только целые значения, а не значения после десятичной дроби.
В предыдущем примере мы видели, что если значение результата в C находится в десятичных числах, значения после десятичных чисел не отображаются в выходных данных, потому что мы объявили C как целое число. Теперь мы будем использовать другой тип данных для объявления из функции DIM для отображения исходного значения C.
Шаг 1. Перейдите на вкладку « Разработчик » и щелкните Visual Basic, чтобы открыть редактор VBA.
Шаг 2: В окне проекта нажмите на Лист 2, чтобы открыть окно кода.
Шаг 3: Как только окно кода открыто, создайте подфункцию, чтобы начать писать код.
Шаг 4: Объявите три переменные AB и C. Объявите A и B как целые числа, а C как двойные.
Шаг 5: Аналогично примеру 1 присвойте значения этим переменным.
Шаг 6: Теперь отобразите вывод с помощью функции msgbox.
Шаг 7: Запустите код с кнопки запуска. Запустив код, мы получим следующий результат:
Теперь у нас есть точное значение C, которое составляет 0, 5.
Давайте использовать функцию DIM для хранения символов означает строки.
Шаг 1. Перейдите на вкладку « Разработчик » и щелкните Visual Basic, чтобы открыть редактор VBA.
Шаг 2: В окне проекта нажмите на Лист 3, чтобы открыть окно кода.
Шаг 3: Создайте подфункцию, чтобы начать писать код,
Шаг 4: Объявите переменную A как строку,
Шаг 5: Присвойте любые случайные значения A,
Шаг 6: Показать вывод с помощью функции msgbox.
Шаг 7: Запустите код из предоставленной кнопки запуска и посмотрите результат,
Объяснение VBA DIM
DIM в VBA используется для объявления переменных как различных типов данных. Переменные могут быть единственной переменной или массивом, который мы должны иметь в виду, чтобы объявить правильный тип данных для получения правильного вывода.
Например, если наши выходные данные будут в String, нам нужно объявить переменную в String, а если выходные данные будут в десятичных числах, то объявить переменную как double и т. Д.
То, что нужно запомнить
Есть несколько вещей, которые мы должны помнить о DIM в VBA:
Рекомендуемые статьи
Создание переменных объектов
С объектной переменной можно обращаться точно так же, как объектом, к которому она относится. Вы можете задавать или возвращать свойства данного объекта или использовать любой из его методов.
Создание переменной объекта
Объявите эту объектную переменную.
Назначьте эту объектную переменную объекту.
Объявление переменной объекта
Чтобы объявить переменную объекта, используйте тусклое заявление или одно из других заявлений объявления (Public, Private или Static). Переменная, которая относится к объекту, должна быть Вариантом, Объектом или определенным типом объекта. Например, следующие объявления являются допустимыми:
Если вы используете объектную переменную, предварительно не объявив ее, типом данных объектной переменной по умолчанию является Variant.
Объявить объектную переменную с типом данных Object можно в случае, когда конкретный тип объекта неизвестен вплоть до запуска процедуры. Используйте тип данных Object для создания универсальной ссылки на любой объект.
Если конкретный тип объекта вам известен, следует объявлять объектную переменную как тип данного объекта. Например, если приложение содержит тип объекта Sample, можно объявить переменную объекта для этого объекта с помощью одного из этих заявлений:
Объявление конкретных типов объектов обеспечивает автоматическую проверку типов, ускорение выполнения кода и улучшенную удобочитаемость.
Назначение переменной объекта объекту
Используйте заявление Set для назначения объекта переменной объекта. Вы можете назначить выражение объекта или Ничего. Например, допустимы следующие назначения переменной объекта.
Можно объединить объявление переменной объекта с назначением ему объекта с помощью ключевого слова New с утверждением Set. Например:
Задание для объектной переменной значения Nothing прерывает связь этой объектной переменной с конкретным объектом. Это предотвращает случайное изменение объекта в результате изменения соответствующей переменной. После закрытия связанного объекта всегда устанавливается переменная объекта Nothing, чтобы можно было проверить, указывает ли объект на допустимый объект. Например:
Конечно, этот тест никогда не может с абсолютной уверенностью определить, закрыл ли пользователь приложение, содержащее объект, к которому относится переменная объекта.
Обратитесь к текущему экземпляру объекта
Ключевое слово Me используется для ссылки на текущий экземпляр объекта, на котором работает код. Все процедуры, связанные с текущим объектом, имею доступ к объекту, на который ссылаются с использованием Me. Использование ключевого слова Me особенно полезно при передаче информации о текущем экземпляре объекта процедуре в другом модуле. Например, предположим, что имеется следующая процедура в модуле
Вы можете вызвать процедуру и передать текущий экземпляр объекта в качестве аргумента с помощью следующего утверждения:
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Что означает DIM в Visual Basic и BASIC?
Что означает DIM в Visual Basic?
10 ответов
Dim первоначально (в BASIC) означало размер, поскольку он использовался для определения размеров массива.
(первоначальная реализация BASIC была Dartmouth BASIC, которая произошла от FORTRAN, где размерность прописана.)
В настоящее время Dim используется для определения любой переменной, а не только массивов, поэтому ее значение больше не интуитивно.
Dim имел различные значения, приписываемые ему.
я нашел ссылки о Dim смысл «Объявить В Памяти», более уместной ссылкой является документ на Дим Заявление опубликовано Oracle как часть ссылки на язык Siebel VB. Конечно, вы можете утверждать, что если вы не объявляете переменные в памяти, где вы это делаете? Может быть!—23—>»объявить в модуле» является хорошей альтернативой, учитывая, как Dim is используемый.
действительно, Не Важно? Я имею в виду, это ключевое слово, которое имеет свой смысл внутри искусственного языка. Это не должно быть слово в английском или любом другом естественном язык. Так что это может означать все, что вы хотите, важно только то, что это работает.
Dim. К моему разочарованию, они не говорят, что значит Dim стоять, и только сказать, как он используется.
но прежде чем моя надежда была тусклой, мне удалось найти это система микрокомпьютер Би-би-си, используемых руководство (который утверждает, что с 1984 года, и я не хочу сомневаться в этом). Микрокомпьютер Би-би-си используется вариант BASIC под названием BBC BASIC и он описан в документе. Хотя в нем не сказано, что делает Dim стоим, он говорит (на стр. 104):
. вы можете измерить N$, чтобы иметь столько записей, сколько хотите. Для например, DIM N$(1000) создаст строковый массив с пространством для 1000 различные наименования.
как я уже сказал, это не говорит, что Dim означает размерность, но служит доказательством того, что связывание Dim С Dimension было обычным делом на момент написания этого документа.
теперь я получил полезный сюрприз позже (на странице 208), название раздела, который описывает ключевое слово DIM (Примечание: это не указано в содержимом), говорит:
перед использованием массива его необходимо определить в инструкции DIM (dimension).
вы можете найти это в рамках True BASIC Online руководства пользователя на веб-странице True BASIC inc, компании, основанной Томас Курц Евгений, соавтор BASIC.
так, в reallity, Dim это сокращение для DIMENSION и да. То, что существовало в Фортране раньше, поэтому вполне вероятно, что оно было выбрано влиянием Фортрана как Патрик Макдональд сказал в своем ответе.
это сокращение от Dimension, поскольку оно изначально использовалось в BASIC для указания размера массивов.
часть исходного исходного кода базового компилятора, где он будет прыгать при поиске DIM команда, в которой вы можете четко видеть исходное намерение для ключевого слова:
позже он стал использоваться для объявления всех видов переменных, когда возможность указать тип для переменных была добавлена в более поздних реализациях.
измерение переменной, в основном вы говорите компилятору, что вам понадобится переменная этого типа в какой-то момент.
он означает размер, но обычно читается как «создать переменную» или » выделить пространство для этого.»
переменной. Первоначально это было сокращенно от «dimension», который не является термином, который используется в программировании (за пределами этого конкретного ключевого слова) в какой-либо значительной степени.
DIM означает объявление в памяти DIM x как новое целое число создает пространство в памяти, где хранится переменная x
назад в день тусклой зарезервированной памяти для массива, и когда память была ограничена, вы должны были быть осторожны, как вы ее использовали. Однажды я написал (в 1981 году) базовую программу на TRS-80 Model III с 48KB RAM. Он не будет работать на аналогичной машине с ОЗУ 16Kb, пока я не уменьшу размер массива, изменив оператор DIM
сокращение от размерности. Это тип переменной. Вы объявляете (или» сообщаете » Visual Basic), что настраиваете переменную с этим словом.
ключевое слово Dim является необязательным, когда мы используем его с модификаторами-Public, Protected, Friend,Protected Friend,Private,Shared,Shadows,Static, ReadOnly и т. д. например: Static nTotal As Integer
оператор Dim можно использовать без типа данных при установке опция выводить на. В этом случае компилятор выводит тип данных переменная от типа ее выражения инициализации. Пример :
приведенное выше утверждение эквивалентно- Dim nExpVar As Integer
В чем разница между dim и set в vba
извините меня, как новичок в VBA.
иногда я использую
в других случаях я использую
в чем разница? И когда я должен использовать что?
7 ответов
нет причин использовать set если не ссылаться на ссылку на объект. Хорошая практика-использовать его только в этом контексте. Для всех других простых типов данных просто используйте оператор присваивания. Это хорошая идея dim (размерность) все переменные, однако:
однако, я не думаю, что это то, о чем вы действительно просите.
это никогда не будет работать. Без Set вы получите ошибку выполнения #91 объектная переменная или переменная блока With не задана. Это потому, что ты должны использовать Set для присвоения значения переменных ссылке на объект. Тогда код выше будет работа.
я думаю, что приведенный ниже код иллюстрирует то, что вы действительно спрашиваете. Предположим, мы не объявляем тип и пусть r быть тип.
Итак, давайте разбей то, что здесь происходит.
r объявляется как вариант
r установлен до Range содержащая ячейка «A1»
дополнительные сведения о свойствах объекта по умолчанию см. В разделе чип Пирсон «член класса по умолчанию».
что касается вашего Set пример:
в других случаях я использую
это не сработало бы без предварительного объявления этого r это Range или
Dim: вы определяете переменную (здесь: r-переменная диапазона типов)
вы должны использовать set с объектами, если r был простым типом (например, int, string), то вы просто напишете:
Dim просто объявляет значение и тип.
Set присваивает значение переменной.
Если переменная определена как объект, например, Dim myfldr как папка, ей присваивается значение с помощью ключевого слова «Set».
Dim является коротким для измерения и используется в VBA и VB6 для объявления локальных переменных.
Set с другой стороны, не имеет ничего общего с объявлениями переменных. The Set ключевое слово используется для назначение переменная объекта для нового объекта.
надеюсь, что проясняет разницу для вас.
в соответствии с инструкцией VBA help on SET он устанавливает ссылку на объект.поэтому, если вы измените свойство, фактический объект также изменится.
другие свойства Vars также меняются, поэтому:

























