Sono nuovo di VBA e voglio sapere se posso convertire la seguente dichiarazione e assegnazione in una riga:
Dim clientToTest As String
clientToTest = clientsToTest(i)
o
Dim clientString As Variant
clientString = Split(clientToTest)
Sono nuovo di VBA e voglio sapere se posso convertire la seguente dichiarazione e assegnazione in una riga:
Dim clientToTest As String
clientToTest = clientsToTest(i)
o
Dim clientString As Variant
clientString = Split(clientToTest)
Risposte:
Sfortunatamente non c'è una scorciatoia in VBA, Il più vicino che otterrai sarà una cosa puramente visiva usando il :
carattere di continuazione se lo vuoi su una riga per leggibilità;
Dim clientToTest As String: clientToTest = clientsToTest(i)
Dim clientString As Variant: clientString = Split(clientToTest)
Suggerimento (riepilogo di altre risposte / commenti): funziona anche con oggetti (Excel 2010):
Dim ws As Worksheet: Set ws = ActiveWorkbook.Worksheets("Sheet1")
Dim ws2 As New Worksheet: ws2.Name = "test"
Puoi fare questo con gli oggetti, come nel seguito.
Dim w As New Widget
Ma non con stringhe o varianti.
:
. Vi sono alcune limitazioni in quanto non è possibile avere più dichiarazioni di valore sulla stessa riga (ad es var1 = val1: var2 = val2
.). Risolverà speradicamente e ti permetterà di fare questo tipo di incarico a volte ma nel suo insieme non suggerito da questa notazione.
Dim x As New T
sintassi, che funziona solo con oggetti.
dim str as String: str = "value"
ed dim str as Worksheet: set str = ActiveWorkbook.worksheets("Sheet1")
entrambi funzionano ripetutamente. Anche se, se faccio un'istanza di oggetto, sbaglierei dim ws as New Worksheet: set ws = ActiveWorkbook.Worksheets("Sheet1")
come qualsiasi altra operazione non valida in VBA.
New
parola chiave no. Questo è tutto ciò che sto dicendo.
in effetti puoi, ma non così.
Sub MySub( Optional Byval Counter as Long=1 , Optional Byval Events as Boolean= True)
'code...
End Sub
E puoi impostare le variabili in modo diverso quando chiami il sub o lasciarle ai loro valori predefiniti.
In alcuni casi l'intera necessità di dichiarare una variabile può essere evitata usando With
statement .
Per esempio,
Dim fd As Office.FileDialog
Set fd = Application.FileDialog(msoFileDialogSaveAs)
If fd.Show Then
'use fd.SelectedItems(1)
End If
questo può essere riscritto come
With Application.FileDialog(msoFileDialogSaveAs)
If .Show Then
'use .SelectedItems(1)
End If
End With
È possibile definire e assegnare il valore come mostrato di seguito in una riga. Ho fornito un esempio di due variabili dichiarate e assegnate in una riga singola. se il tipo di dati di più variabili è lo stesso
Dim recordStart, recordEnd As Integer: recordStart = 935: recordEnd = 946