Vba excel имя задано неоднозначно
Правила присвоения имен в языке Visual Basic
При присвоении имен процедурам , константам , переменным , и аргументам в модуле Visual Basic используются следующие правила:
Имена должны начинаться с буквы.
Имена не должны содержать более 255 символов.
Как правило, не следует использовать имена, совпадающие с названиями функций , инструкций , и методов языка Visual Basic, так как при этом прекращается выделение в тексте одноименных ключевых слов языка. Чтобы использовать встроенные функции языка, инструкции или методы, имена которых конфликтуют с присвоенным пользователем именем, их необходимо явно указывать. Для этого перед именем встроенной функции, инструкции или метода, должно стоять имя связанной с ними библиотеки типов . Например, если имеется переменная с именем Left, то функция Left должна вызываться как VBA.Left.
Не допускается использование повторяющихся имен на одном уровне области определения . Нельзя, например, описать две переменных с именем age в одной процедуре. Однако описание личной переменной age и переменной уровня процедуры age внутри одного модуля допустимо.
Примечание. В языке Visual Basic не различаются строчные и прописные буквы, однако в инструкции описания сохраняются прописные буквы.
Работа с приложениями
Язык Visual Basic позволяет создавать новые объекты и загружать существующие объекты из многих приложений Microsoft. Другие приложения также могут предоставлять объекты, которые пользователь может создавать с помощью Visual Basic. Дополнительные сведения содержатся в документации приложения.
Для создания нового объекта или получения существующего объекта из другого приложения используются функции CreateObject и GetObject :
‘ Запуск Microsoft Excel и создание нового листа.
Set ExcelWorksheet = CreateObject(“Excel.Sheet”)
‘ Запуск Microsoft Excel и открытие существующего листа.
Set ExcelWorksheet = GetObject(“SHEET1.XLS”)
‘ Запуск Microsoft Word.
Set WordBasic = CreateObject(“Word.Basic”)
Большинство приложений предоставляют также методы Exit или Quit , которые закрывают приложение, независимо от того отображается оно на экране или нет. Дополнительные сведения по объектам, методам и свойствам, предоставляемым приложением содержатся в документации по приложению.
Некоторые приложения позволяют использовать ключевое слово New для создания объекта любого класса, который существует в библиотеке типов . Например:
Dim X As New Field
В данном случае Field является примером класса из библиотеки типов доступа к данным. Новый экземпляр объекта Field создается с помощью этого синтаксиса. Информация о том, какие классы объектов могут быть созданы таким образом, содержится в документации по приложению.
Процедура Function представляет собой последовательность инструкций языка Visual Basic, ограниченных инструкциями Function и End Function . Процедура Function подобна процедуре Sub , однако в отличие от последней она возвращает значения. Процедура Function может получать аргументы , как например константы , переменные , или выражения , передаваемые ей вызывающей процедурой. Если процедура Function не имеет аргументов, ее инструкция Function должна содержать пустые скобки. Возврат значения осуществляется путем его присвоения имени функции в одной или нескольких инструкциях процедуры.
temp = Application.InputBox(Prompt:= _
“Введите температуру в градусах Фаренгейта.”, Type:=1)
MsgBox “Температура равна ” & Celsius(temp) & ” градусов Цельсия.”
Celsius = (fDegrees – 32) * 5 / 9
Процедура Property представляет собой последовательность инструкций языка Visual Basic, которые позволяют программисту создавать собственные свойства и оперировать с ними.
Процедуры Property создают допускающие только чтение свойства для форм , стандартных модулей и модулей класса .
Процедуры Property следует использовать вместо переменных Public в программе, которая должна выполняться после задания значение свойства.
В отличие от переменных Public процедуры Property могут иметь справочные строки, присвоенные им в окне Просмотр объектов .
Когда создается процедура Property , она становится свойством модуля , содержащего эту процедуру. В языке Visual Basic имеются три следующих типа процедур Property :
Правила наименования переменных, констант, процедур и аргументов:
- Имя может состоять из букв, цифр и знака подчеркивания (_). Пробел и другие специальные символы не допускаются, кроме шести символов-суффиксов для переменных.
- Первым знаком имени должна быть буква. Длина имени ограничена 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 могут быть объявлены с одним из следующих типов данных: Byte, Boolean, Integer, Long, Single, Double, Currency, Date, String (для строк переменной или фиксированной длины), Object или Variant. Если при объявлении переменной тип данных не указан, по умолчанию присваивается тип Variant.
Шесть типов данных имеют соответствующие им символы, которые можно использовать при объявлении переменных, добавляя их в конце имени как суффиксы. Переменная будет объявлена с соответствующим символу типом данных.
Символы, назначенные типам данных:
Примеры объявления переменных
Пример 1
Объявление переменных с указанием типа данных с помощью ключевых слов и суффиксов:
Добрый вечер всем гуру VBA и Excel.
Я тут бьюсь надо таким вопросом.
Допустим у меня в книги есть 4 листа, с заданными в VBA именами - Client_Card, List_OOH, List_Radio и List_TV и все эти листы в книге полностью скрыты (xlSheetVeryHidden)
Как мне загнать в переменную не название листа, которое может быть каким угодно, в том числе его может изменить и сам пользователь, а именное кодовое название листа.
Получив в переменной кодовое название листа, мне надо его использовать.
Таким образом я получаю имя листа.
Client_Card.Name
List_OOH.Name
List_Radio.Name
List_TV.Name
А такой вариант List_TV.CodeName не дает мне List_TV и я как бы не знаю как достать именно List_TV, что бы поместить его в переменную, допустим Sheets_Open и потом сделать так:
Dim WBSheets As Object
Dim Sheets_Open As String
p.s. код не рабочий. это так мой набросок, моих мыслей.
Добрый вечер всем гуру VBA и Excel.
Я тут бьюсь надо таким вопросом.
Допустим у меня в книги есть 4 листа, с заданными в VBA именами - Client_Card, List_OOH, List_Radio и List_TV и все эти листы в книге полностью скрыты (xlSheetVeryHidden)
Как мне загнать в переменную не название листа, которое может быть каким угодно, в том числе его может изменить и сам пользователь, а именное кодовое название листа.
Получив в переменной кодовое название листа, мне надо его использовать.
Таким образом я получаю имя листа.
Client_Card.Name
List_OOH.Name
List_Radio.Name
List_TV.Name
А такой вариант List_TV.CodeName не дает мне List_TV и я как бы не знаю как достать именно List_TV, что бы поместить его в переменную, допустим Sheets_Open и потом сделать так:
Dim WBSheets As Object
Dim Sheets_Open As String
p.s. код не рабочий. это так мой набросок, моих мыслей. lopuxi
О_о . и так можно было?
Я тут бьюсь надо таким вопросом.
Допустим у меня в книги есть 4 листа, с заданными в VBA именами - Client_Card, List_OOH, List_Radio и List_TV и все эти листы в книге полностью скрыты (xlSheetVeryHidden)
Как мне загнать в переменную не название листа, которое может быть каким угодно, в том числе его может изменить и сам пользователь, а именное кодовое название листа.
Получив в переменной кодовое название листа, мне надо его использовать.
Таким образом я получаю имя листа.
Client_Card.Name
List_OOH.Name
List_Radio.Name
List_TV.Name
А такой вариант List_TV.CodeName не дает мне List_TV и я как бы не знаю как достать именно List_TV, что бы поместить его в переменную, допустим Sheets_Open и потом сделать так:
Dim WBSheets As Object
Dim Sheets_Open As String
Добрый вечер всем гуру VBA и Excel.
Я тут бьюсь надо таким вопросом.
Допустим у меня в книги есть 4 листа, с заданными в VBA именами - Client_Card, List_OOH, List_Radio и List_TV и все эти листы в книге полностью скрыты (xlSheetVeryHidden)
Как мне загнать в переменную не название листа, которое может быть каким угодно, в том числе его может изменить и сам пользователь, а именное кодовое название листа.
Получив в переменной кодовое название листа, мне надо его использовать.
Таким образом я получаю имя листа.
Client_Card.Name
List_OOH.Name
List_Radio.Name
List_TV.Name
А такой вариант List_TV.CodeName не дает мне List_TV и я как бы не знаю как достать именно List_TV, что бы поместить его в переменную, допустим Sheets_Open и потом сделать так:
Dim WBSheets As Object
Dim Sheets_Open As String
p.s. код не рабочий. это так мой набросок, моих мыслей.
Добрый вечер всем гуру VBA и Excel.
Я тут бьюсь надо таким вопросом.
Допустим у меня в книги есть 4 листа, с заданными в VBA именами - Client_Card, List_OOH, List_Radio и List_TV и все эти листы в книге полностью скрыты (xlSheetVeryHidden)
Как мне загнать в переменную не название листа, которое может быть каким угодно, в том числе его может изменить и сам пользователь, а именное кодовое название листа.
Получив в переменной кодовое название листа, мне надо его использовать.
Таким образом я получаю имя листа.
Client_Card.Name
List_OOH.Name
List_Radio.Name
List_TV.Name
А такой вариант List_TV.CodeName не дает мне List_TV и я как бы не знаю как достать именно List_TV, что бы поместить его в переменную, допустим Sheets_Open и потом сделать так:
Dim WBSheets As Object
Dim Sheets_Open As String
p.s. код не рабочий. это так мой набросок, моих мыслей. lopuxi
О_о . и так можно было?
Я тут бьюсь надо таким вопросом.
Допустим у меня в книги есть 4 листа, с заданными в VBA именами - Client_Card, List_OOH, List_Radio и List_TV и все эти листы в книге полностью скрыты (xlSheetVeryHidden)
Как мне загнать в переменную не название листа, которое может быть каким угодно, в том числе его может изменить и сам пользователь, а именное кодовое название листа.
Получив в переменной кодовое название листа, мне надо его использовать.
Таким образом я получаю имя листа.
Client_Card.Name
List_OOH.Name
List_Radio.Name
List_TV.Name
А такой вариант List_TV.CodeName не дает мне List_TV и я как бы не знаю как достать именно List_TV, что бы поместить его в переменную, допустим Sheets_Open и потом сделать так:
Dim WBSheets As Object
Dim Sheets_Open As String
Читайте также: