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

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

Dim clientToTest As String
clientToTest = clientsToTest(i)

или

Dim clientString As Variant
clientString = Split(clientToTest)

Ответ 1

К сожалению, в 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"

Ответ 2

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

Dim w As New Widget

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

Ответ 3

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

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

'code...

End Sub

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

Ответ 4

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

Например,

    Dim fd As Office.FileDialog
    Set fd = Application.FileDialog(msoFileDialogSaveAs)
    If fd.Show Then
        'use fd.SelectedItems(1)
    End If

это можно переписать как

    With Application.FileDialog(msoFileDialogSaveAs)
      If .Show Then
        'use .SelectedItems(1)
      End If
    End With