Tipp 0444 Makroausführung beschleunigen (Objekte)
Autor/Einsender:
Datum:
  Angie
17.03.2005
Entwicklungsumgebung:   Excel
Wird im Code mehr als ein Mal auf ein Objekt (z. B. Workbook, Worksheet, Range) zugegriffen, sollten Objektvariablen definiert und ein Objektverweis gesetzt werden (Beispiel 2). Alternativ ist zwar auch eine With-Anweisung (Beispiel 3) möglich, die Verwendung von Objektverweisen ist jedoch zu empfehlen. Die Beispiele 2 und 3 sind in der Ausführungsgeschwindigkeit identisch, jedoch um ca. 30 % schneller als Beispiel 1.
Beispiel 1
 
Sub AddDataToCells_1()
  Dim nRow As Integer

  For nRow = 1 To 10000
    ActiveWorkbook.Worksheets(1).Range("A1"). _
          Offset(nRow - 1, 0).Value = nRow
  Next nRow
End Sub
 
Beispiel 2
 
Sub AddDataToCells_2()
  Dim objRange As Range
  Dim nRow     As Integer

  Set objRange = ActiveWorkbook.Worksheets(1).Range("A1")
  For nRow = 1 To 10000
    objRange.Offset(nRow - 1, 0).Value = nRow
  Next nRow
  Set objRange = Nothing
End Sub
 
Beispiel 3
 
Sub AddDataToCells_3()
  Dim nRow As Integer
  
  With ActiveWorkbook.Worksheets(1).Range("A1")
    For nRow = 1 To 10000
      .Offset(nRow - 1, 0).Value = nRow
    Next nRow
  End With
End Sub
 
Beispiel 4
Wenn mehrere Aktionen durchgeführt werden sollen, sich die Programmierung also nicht nur auf das Zuweisen von Daten beschränkt, sollte zusätzlich noch eine Objektvariable für das Tabellenblatt definiert werden. Hier wird Beispiel 2 entsprechend ergänzt und angepasst.
 
Sub AddDataToCells_4()
  Dim objWks   As Worksheet
  Dim objRange As Range
  Dim nRow     As Integer

  Set objWks = ActiveWorkbook.Worksheets(1)

  Set objRange = objWks.Range("A1")
  For nRow = 2 To 10000
    objRange.Offset(nRow - 1, 0).Value = nRow
  Next nRow
  Set objRange = Nothing

  With objWks.Cells(1, 1)
    .Value = "VB-fun-Demo"
    .Font.Bold = True
  End With
  objWks.Columns(1).AutoFit

  Set objWks = Nothing
End Sub
 

Windows-Version
95
98
ME
NT
2000
XP
Vista
Win 7
Excel-Version
95
97
2000
2002 (XP)
2003
2007
2010


Vorheriger Tipp Zum Seitenanfang Nächster Tipp

Startseite | Projekte | Tutorials | API-Referenz | VB-/VBA-Tipps | Komponenten | Bücherecke | VB/VBA-Forum | VB.Net-Forum | DirectX-Forum | Foren-Archiv | DirectX | VB.Net-Tipps | Chat | Spielplatz | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum

Seite empfehlen Bug-Report
Letzte Aktualisierung: Donnerstag, 19. Mai 2011