Могу ли я одновременно объявить и назначить переменную в VBA?

133

Я новичок в VBA и хочу знать, могу ли я преобразовать следующее объявление и назначение в одну строку:

Dim clientToTest As String
clientToTest = clientsToTest(i)

или

Dim clientString As Variant
clientString = Split(clientToTest)
Теги:
variable-declaration

3 ответа

190
Лучший ответ

К сожалению, в VBA нет сокращения. Самое близкое, что вы получите, - это чисто визуальная вещь, использующая символ продолжения : если вы хотите, чтобы он был в одной строке для удобства чтения;

Dim clientToTest As String:  clientToTest = clientsToTest(i)
Dim clientString As Variant: clientString = Split(clientToTest)

Подсказка (резюме других ответов/комментариев): Работает и с объектами (Excel 2010):

dim ws as Worksheet: set ws = ActiveWorkbook.Worksheets("Sheet1")
dim ws2 as New Worksheet: ws2.Name = "test"
  • 13
    +1, я помню, как Microsoft предлагала при сборке в .NET, чтобы разработчики VB6 начали это делать, чтобы подготовиться к VB.NET.
17

Вы можете сортировать это с объектами, как в следующем.

Dim w As New Widget

Но не со строками или вариантами.

  • 0
    Это не правильно, в целом. Вы можете объявить и инициализировать переменную в одной строке с любым типом данных (значением или объектом), просто разделив «действие» с помощью точки с запятой : Существуют некоторые ограничения, поскольку вы не можете иметь несколько объявлений значений в одной строке (т. var1 = val1: var2 = val2 ). Он будет ошибаться сперадически и позволит вам иногда выполнять этот тип назначения, но в целом не предлагается этой нотацией.
  • 2
    @GoldBishop, да, использование двоеточия для объединения нескольких операторов в одну строку обычно работает (как сказал Алекс К.). То, что я говорю, не будет работать со строками или вариантами (или, возможно, с другими примитивами) - это синтаксис Dim x As New T , который работает только с объектами.
Показать ещё 6 комментариев
0

на самом деле, вы можете, но не так.

Sub MySub( Optional Byval Counter as Long=1 , Optional Byval Events as Boolean= True)

'code...

End Sub

И вы можете установить переменные по-разному при вызове sub или оставить их по умолчанию.

  • 5
    Это для аргументов, а не локальных переменных.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню