Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1028to1032
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
Inhaltsverzeichnis

Schleife langsam

Schleife langsam
10.12.2008 13:25:42
Marcus
Hallo,
vielleicht kann mir jemand weiterhelfen. Was kann ich tun, das diese Schleife nicht so langsam durchläuft.
Wenn ich debugge wird immer hier "If Cells(Counter, 11) = True Then" gestoppt!
Programm soll eine Spalte durchlaufen und aus einer vorhergehenden Spalte einen Wert übernehmen, wenn die Bedingung in der zu durchlaufenden Spalte "WAHR" ist. Danach wird der Wert übernommen und dient als Suchindex für eine Liste die im Schleifendurchlauf n-mal gedruckt wird.

Private Sub CommandButton1_Click()
With Application
.Calculation = xlAutomatic
.MaxChange = 0.001
ActiveWorkbook.PrecisionAsDisplayed = False
End With
If MsgBox("Alles berechnet!" & Chr(13) & "Jetzt drucken?", vbYesNo) = vbNo Then
Exit Sub
Else
End If
Range("H1").Select
Range("H1") = 1
MsgBox ("Weiter")
Dim Counter, n As Integer
For Counter = 1 To 523
Worksheets("Stapel auto").Cells(Counter, 10).Value = Counter
If Cells(Counter, 11) = True Then
Range("H1") = Cells(Counter, 10)
For i = 1 To Int(Cells(Counter, 15) / 50) + 1
'ActiveSheet.PrintOut
Next i
End If
n = n - (Cells(Counter, 11) = 1)
Next Counter
MsgBox ("Das war's:" & " " & n & " " & "Stapelanhänger gedruckt")
End Sub


Vielen Dank
Marcus Leu

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Schleife langsam
10.12.2008 17:33:11
Jürgen
Hallo Marcus,
bei der Deklaration von Variablen ist es erforderlich, bei jeder Variable den Datentyp zu nennen, um ihn festzulegen. Deine Zeile "Dim Counter, n As Integer" erzeugt also eine Variable vom Typ integer (nämlich "n") und eine vom Typ variant (nämlich "counter").
Ich habe noch nicht wirklich verstanden, wo genau Dich der Schuh drückt, was die angesprochenen Performanceprobleme anbelangt, ist mir nur das ineffektive Ausdrucken aufgefallen. In Deinem ursprünglichen Code wird für jeden Ausdruck dieser erneut aufbereitet und als eigener Druckjob gestartet. Die Methode printout kenn aber auch einen Parameter für die Anzahl der Kopien. Wenn Du den verwendest (s.u.), wird pro Zeile nur max. einmal der Druck aufbereitet und an den Drucker geschickt, inkl. der Anweisung, diesen Druckjob x-mal zu drucken:

Private Sub CommandButton1_Click()
With Application
.Calculation = xlAutomatic
.MaxChange = 0.001
ActiveWorkbook.PrecisionAsDisplayed = False
End With
If MsgBox("Alles berechnet!" & Chr(13) & "Jetzt drucken?", vbYesNo) = vbNo Then
Else
'Range("H1").Select
Range("H1") = 1
MsgBox ("Weiter")
Dim Counter As Integer
Dim n As Integer
For Counter = 1 To 523
Worksheets("Stapel auto").Cells(Counter, 10).Value = Counter
If Cells(Counter, 11) = True Then
Range("H1") = Cells(Counter, 10)
ActiveSheet.PrintOut Copies:=Int(Cells(Counter, 15) / 50) + 1
End If
n = n - (Cells(Counter, 11) = 1)
Next Counter
MsgBox ("Das war's:" & " " & n & " " & "Stapelanhänger gedruckt")
End If
End Sub


Über den Parameter Collate kannst Du übrigens steuern, ob ein mehrseitiger Ausdruck sortiert oder gruppiert erfolgen soll.
Herzlichen Gruß
Jürgen

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige