Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
744to748
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
744to748
744to748
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

VBA Schleife optimieren

VBA Schleife optimieren
15.03.2006 09:13:01
Pascal
Hallo zusammen,
seite dem Wechsel auf Excel 2003 dauern eine Makros in einer älteren umfangreichen Anwendung viel länger (von wenige Sec. / Min. auf Stunden)
Nun bin ich kein VBA Profi und ich habe mir das Makro damals so dahin gestrickt. Kann mir hier jemand helfen oder kennt jemand eine Seite, die Probleme in VBA von XLS 2003 kennt?
Im Debug scheint er in folgender Schleife sehr langsam zu durchlaufen:
Sheets("Hilfstabelle_AffCluster3").Range("a1:c64000").ClearContents
d = Sheets("Steckbrief").Cells(11, 2)
i = 6
j = 1
Do While a 0
i = i + 1
a = Sheets("Affinitätenliste 3").Cells(i, 1)
b = Sheets("Affinitätenliste 3").Cells(i, 3)
c = Sheets("Affinitätenliste 3").Cells(i, 5)
If (a = d Or b = d Or c = d) Then
Sheets("Hilfstabelle_AffCluster3").Cells(j, 1) = a
Sheets("Hilfstabelle_AffCluster3").Cells(j, 2) = b
Sheets("Hilfstabelle_AffCluster3").Cells(j, 3) = c
j = j + 1
End If
Ich kann sonst auch noch mal den gesamten Code posten.
Besten Dank für Eure Hilfe,
Pascal

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Schleife optimieren
15.03.2006 10:26:14
ChrisL
Hallo Pascal
In einem ersten Schritt würde ich folgendes versuchen:

Sub t()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
' Dein Makro
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub

Gruss
Chris
AW: VBA Schleife optimieren xls Versionsproblem?
16.03.2006 10:21:44
Pascal
Hallo,
Danke für den Input, leider ändert sich hierdurch nur wenig.
Kann man den Codeinhalt vielleicht optimieren? Mir ist völlig unklar, warum das auf XLS 2002 noch sehr schnell geht und auf xls 2003 gähnend langsam?
Meine Vermutung ist, dass der folgende Code sehr langsam ist. Kann man den evtl. anders formulieren?
a = Sheets("Affinitätenliste 3").Cells(i, 1)
b = Sheets("Affinitätenliste 3").Cells(i, 3)
c = Sheets("Affinitätenliste 3").Cells(i, 5)
If (a = d Or b = d Or c = d) Then
Vielen Dank für die Mühe,
Pascal
Anzeige
AW: VBA Schleife optimieren xls Versionsproblem?
16.03.2006 11:28:42
ChrisL
Hallo Pascal
Eine wirkliche Optimierung bringst du vermutlich nur hin, wenn du auf die Schleife verzichten kannst. Vielleicht wäre es sinnvoll, wenn du die eigentliche Aufgabenstellung (was macht dein Makro) formulierst evtl. mit Beispieldatei.
Für den Code-Auszug sehe ich folgende Möglichkeit (wird aber vermutlich nicht viel schneller):

Sub t()
Const i = 1
Const d = "x"
If WorksheetFunction.CountIf(Range(Cells(i, 1), Cells(i, 5)), d) Then
MsgBox "ja"
Else
MsgBox "nein"
End If
End Sub

Spalte B und D werden dabei aber auch einbezogen.
Gruss
Chris
Anzeige
AW: VBA Schleife optimieren
16.03.2006 15:32:34
Reinhard
Hi Pascal,
poste mal den ganzen Code.
Set wsA = Sheets("Affinitätenliste 3")
Set wsH = Sheets("Hilfstabelle_AffCluster3")
Sheets("Hilfstabelle_AffCluster3").Range("a1:c64000").ClearContents
d = Sheets("Steckbrief").Cells(11, 2)
i = 6
j = 1
With wsH
While a <> 0
i = i + 1
If wsA.Cells(i, 1) = d Or wsA.Cells(i, 3) = d Or wsA.Cells(i, 5) = d Then
.Cells(j, 1) = wsA.Cells(i, 1)
.Cells(j, 2) = wsA.Cells(i, 3)
.Cells(j, 3) = wsA.Cells(i, 5)
j = j + 1
End If
Wend
End With

Gruß
Reinhard
ps: Ich freue mich über eine Rückmeldung ob diese Antwort hilfreich war oder nicht..
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige