Jestem nowy w VBA i chcę wiedzieć, czy mogę zamienić następującą deklarację i przypisanie w jedną linię:
Dim clientToTest As String
clientToTest = clientsToTest(i)
lub
Dim clientString As Variant
clientString = Split(clientToTest)
Jestem nowy w VBA i chcę wiedzieć, czy mogę zamienić następującą deklarację i przypisanie w jedną linię:
Dim clientToTest As String
clientToTest = clientsToTest(i)
lub
Dim clientString As Variant
clientString = Split(clientToTest)
Odpowiedzi:
Niestety, w VBA nie ma skrótu. Najbliżej można uzyskać czysto wizualną rzecz, używając :
znaku kontynuacji, jeśli chcesz, aby był w jednej linii dla czytelności;
Dim clientToTest As String: clientToTest = clientsToTest(i)
Dim clientString As Variant: clientString = Split(clientToTest)
Wskazówka (podsumowanie innych odpowiedzi / komentarzy): Działa również z obiektami (Excel 2010):
Dim ws As Worksheet: Set ws = ActiveWorkbook.Worksheets("Sheet1")
Dim ws2 As New Worksheet: ws2.Name = "test"
Możesz to zrobić z obiektami, jak poniżej.
Dim w As New Widget
Ale nie w przypadku łańcuchów lub wariantów.
:
. Istnieją pewne ograniczenia, ponieważ nie można mieć wielu deklaracji wartości w tym samym wierszu (tj var1 = val1: var2 = val2
.). Speradycznie będzie to błąd i pozwoli ci wykonać tego typu zadania czasami, ale jako całość nie jest sugerowana przez ten zapis.
Dim x As New T
składnia, która działa tylko z obiektami.
dim str as String: str = "value"
i dim str as Worksheet: set str = ActiveWorkbook.worksheets("Sheet1")
oba działają wielokrotnie. Chociaż, jeśli wykonam wystąpienie Object, dim ws as New Worksheet: set ws = ActiveWorkbook.Worksheets("Sheet1")
wystąpi błąd, jak każda inna niepoprawna operacja w VBA.
New
kluczowe nie. To wszystko, co mówię.
w rzeczywistości możesz, ale nie w ten sposób.
Sub MySub( Optional Byval Counter as Long=1 , Optional Byval Events as Boolean= True)
'code...
End Sub
I możesz ustawić zmienne inaczej podczas wywoływania sub lub pozwolić im na ich domyślne wartości.
W niektórych przypadkach można uniknąć całej potrzeby deklarowania zmiennej za pomocą With
instrukcji .
Na przykład,
Dim fd As Office.FileDialog
Set fd = Application.FileDialog(msoFileDialogSaveAs)
If fd.Show Then
'use fd.SelectedItems(1)
End If
można to przepisać jako
With Application.FileDialog(msoFileDialogSaveAs)
If .Show Then
'use .SelectedItems(1)
End If
End With
Możesz zdefiniować i przypisać wartość, jak pokazano poniżej, w jednej linii. Podałem przykład dwóch zmiennych zadeklarowanych i przypisanych w jednym wierszu. jeśli typ danych wielu zmiennych jest taki sam
Dim recordStart, recordEnd As Integer: recordStart = 935: recordEnd = 946