Могу ли я одновременно объявить и назначить переменную в VBA? - PullRequest
150 голосов
/ 15 июля 2010

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

Dim clientToTest As String
clientToTest = clientsToTest(i)

или

Dim clientString As Variant
clientString = Split(clientToTest)

Ответы [ 4 ]

215 голосов
/ 15 июля 2010

К сожалению, в 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"
19 голосов
/ 15 июля 2010

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

Dim w As New Widget

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

1 голос
/ 07 марта 2016

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

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

'code...

End Sub

И вы можете устанавливать переменные по-разному при вызове подпрограммы или разрешать им значения по умолчанию.

0 голосов
/ 20 марта 2019

В некоторых случаях можно полностью избежать необходимости объявления переменной с помощью оператора 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
...