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
1220to1224
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
VBA Endlosschleife beim Drucken unterbinden
Jonathan
Hallo liebe Experten,
ich stehe mal wieder vor einem Problem und hoffe ihr könnt mir weiterhelfen.
In einem Arbeitsblatt befinden sich mehrere Checkboxen (~ 20) . Jeder dieser Checkboxen ist beim aktivieren ein fester Druckbereich zugewiesen. Soweit so gut... =)
Nun habe ich mir einen Druckbutton erstellt, welcher vor dem Druck prüfen soll ob eine Checkbox aktiv ist, ist dies der Fall wird der entsprechende Druckbereich gedruckt.
Folgenden Code habe ich bereits:
Private Sub cmdDrucken_Click() 'Button "Druckmenü"
Dim ooElement As OLEObject
For Each ooElement In ActiveSheet.OLEObjects
If ooElement.progID = "Forms.CheckBox.1" Then
Sheets("Kennzahlen 2190").PrintOut
End If
Next ooElement
End Sub
Problem hierbei ist nun, dass es jetzt eine Endlosschleife gibt und er nicht mehr mit dem Drucken aufhört.
Was muss in den Code rein, damit er jede Checkbox nur einmal ausdruckt bzw. nur ein Durchlauf macht?
Besten Dank schon mal.
Gruß
Jonathan
AW: VBA Endlosschleife beim Drucken unterbinden
20.07.2011 10:03:27
Rudi
Hallo,
1. sehe ich da keine Endlosschleife
und
2. prüfst du nicht, ob die Checkbox=True ist.
Hast du noch eine Workbook_BeforePrint-Prozedur?
Gruß
Rudi
AW: VBA Endlosschleife beim Drucken unterbinden
20.07.2011 10:17:34
Jonathan
Hallo Rudi,
vielen Dank für die Antwort.
Eine Workbook_BeforePrint Prozedur habe ich nicht.
zu 1. sehe ich da keine Endlosschleife
Wenn ich meinen Code ausführe, (zum testen habe ich eine Checkbox angekreuzt) hört er nicht mehr auf zu drucken - dies meinte ich mit Endlosschleife.
zu 2. prüfst du nicht, ob die Checkbox=True ist.
Stimmt, da hast du recht.
Wie muss den der Code aussehen, damit die Checkboxen alle auf Value = True überprüft werden und wenn dies der Fall ist, der entsprechende Druckbereich gedruckt wird?
Gruß
Jonathan
Anzeige
AW: VBA Endlosschleife beim Drucken unterbinden
20.07.2011 10:27:50
Rudi
Hallo,
zu 2:
Sub ttt()
Dim ooElement As OLEObject
For Each ooElement In ActiveSheet.OLEObjects
If ooElement.progID = "Forms.CheckBox.1" Then
If ooElement.Object = True Then
Sheets("Kennzahlen 2190").PrintOut
End If
End If
Next ooElement
End Sub
Aber: Du druckst für jede Checkbox das ganze Blatt.
der entsprechende Druckbereich gedruckt wird?
Wie wird der denn definiert? Per Click-Prozedur? Dann darf aber immer nur eine CBX True sein.
Gruß
Rudi
AW: VBA Endlosschleife beim Drucken unterbinden
20.07.2011 10:47:39
Jonathan
Hallo Rudi,
die Antworten kommen ja super schnell... =) Vielen Dank.
Der erste Code funktioniert soweit.
Der entsprechende Druckbereich wird bislang je Checkbox in folgendem Code festgelegt:
Private Sub cbstk_Change() 'Stückzahl
With Sheets("Kennzahlen 2190")
If cbstk.Value = True Then
ActiveSheet.Rows("12:64").EntireRow.Hidden = False
Application.Goto Reference:=Cells(12, 1), Scroll:=True
.PageSetup.PrintArea = "$C$12:$BU$64"
Else
ActiveSheet.Rows("12:64").EntireRow.Hidden = True
.PageSetup.PrintArea = ""
End If
End With
End Sub
Da dies nun ja nur funktioniert wenn nur eine Checkbox aktiv ist, wäre meine Frage noch wie sich das realisieren lässt, dass mehrere Checkboxen aktiv sein können und die Bereiche gedruckt werden.
Besten Dank schon mal.
Gruß
Jonathan
Anzeige
AW: VBA Endlosschleife beim Drucken unterbinden
20.07.2011 11:04:55
Rudi
Hallo,
jetzt steck ich da ja nicht so drin.
Wenn du mit den CBx Zeilen ein- und ausblendest, erübrigt sich doch das Setzen der PrintArea.
D.h. du kannst den Druckbereich einfach manuell auf C:BU setzen, so lassen und einfach 1x Drucken.
Oder willst du je CBx einblenden, drucken, ausblenden?
Gruß
Rudi
AW: VBA Endlosschleife beim Drucken unterbinden
20.07.2011 11:23:07
Jonathan
Hallo Rudi,
mein erster Ansatz war auch, manuelle Seitenumbrüche zu setzten und dann die eingeblendeten Zeilen zu drucken. Doch aus mir bislang unerklärlichen Gründen werden teilweise für ausgeblendete Zeilen leere Blätter mitgedruckt...
Daher bin ich auf den Druckbereich umgestiegen.
Ich werde mir eine Lösung überlegen...
Vielen Dank für deine Hilfe.
Gruß
Jonathan
Anzeige
AW: VBA Endlosschleife beim Drucken unterbinden
20.07.2011 11:29:23
Rudi
Hallo,
mal als Ansatz:
Benenne deine Checkboxen nach dem Schema cbx_ErsteZeile_LetzteZeile um, also z.B. cbx_12_64.
Alle Change-Prozeduren löschen oder auskommentieren.
Code:
Sub xxxx()
Dim oCBX As OLEObject
Dim lngFirst As Long, lngLast As Long
Dim rngPrint As Range
With ActiveSheet
.Range(.Rows(10), .Rows(1000)).Hidden = True
For Each oCBX In .OLEObjects
If oCBX.Object Then
lngFirst = Split(oCBX.Name, "_")(1)
lngLast = Split(oCBX.Name, "_")(2)
Set rngPrint = .Range(.Cells(lngFirst, 3), .Cells(lngLast, 73))
.PageSetup.PrintArea = rngPrint.Address
rngPrint.EntireRow.Hidden = False
.PrintOut
rngPrint.EntireRow.Hidden = True
End If
Next
.PageSetup.PrintArea = ""
End With
End Sub

Gruß
Rudi
Anzeige
AW: VBA Endlosschleife beim Drucken unterbinden
20.07.2011 13:57:44
Jonathan
Hallo Rudi,
vielen Dank für deinen Ansatz. Ich habe ihn nochmals leicht abgewandelt - nun funktioniert es so wie ich brauche. =)
Gruß
Jonathan

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige