web-dev-qa-db-fra.com

Puis-je déclarer et affecter simultanément une variable dans VBA?

Je suis nouveau dans VBA et veux savoir si je peux convertir la déclaration et l'affectation suivantes en une seule ligne:

Dim clientToTest As String
clientToTest = clientsToTest(i)

ou

Dim clientString As Variant
clientString = Split(clientToTest)
152
Ian R. O'Brien

Malheureusement, il n’ya pas d’abrégé dans VBA. Le plus proche que vous obtiendrez est une chose purement visuelle utilisant le caractère de continuation : si vous le voulez sur une ligne pour la lisibilité;

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

Astuce (résumé des autres réponses/commentaires): Fonctionne aussi avec les objets (Excel 2010):

Dim ws  As Worksheet:     Set ws       = ActiveWorkbook.Worksheets("Sheet1")
Dim ws2 As New Worksheet:     ws2.Name = "test"
218
Alex K.

Vous pouvez en quelque sorte le faire avec des objets, comme dans ce qui suit.

Dim w As New Widget

Mais pas avec des chaînes ou des variantes.

19
John M Gant

en fait, vous pouvez, mais pas comme ça.

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

'code...

End Sub

Et vous pouvez définir les variables différemment lorsque vous appelez le sous-marin ou les laisser à leurs valeurs par défaut.

1

Dans certains cas, il est possible d'éviter la nécessité de déclarer une variable en utilisant instruction With .

Par exemple,

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

cela peut être réécrit comme

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