Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
264to268
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
264to268
264to268
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Druckschleife

Druckschleife
05.06.2003 17:03:53
Jens
Hallo liebe Forumsteilnehmer!

ich habe in einer Excel-Datei 2 Arbeitsblätter. In Blatt 1 sind die Daten (jeder Datensatz in einer Zeile) und in Blatt 2 ein Formular, welches sich die Daten aus Blatt 1 herausholt und eine ganze Reihe von Berechnungen durchführt.

Anschließend möchte ich pro Datensatz einen Ausdruck von Blatt 2.
Das sind zwar nicht soviel Datensätze (bis ca. 50) aber trotzdem würde es mich interessieren, wie eine Makro-Schleife aussieht, die Abhängig von der Anzahl der Datensätze das Formular druckt.

Kann mir jemand helfen? Ich habe leider so gut wie keine Ahnung von Makros.

Gruß, jens

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Druckschleife
05.06.2003 17:20:37
Ramses

Hallo Jens

unabhängig von deinem Makro und wie du die Daten in dein EXCEL Formular kriegst:

Druckt soviel Formulare wie Datensätze vorhanden sind.
Vor dem Printout musst du deinen Code so anpassen, dass die Daten immer korrekt übertragen werden.

Gruss Rainer

Re: Druckschleife
05.06.2003 17:55:22
Jens

Hallo Rainer,

vielen Dank für Deine Antwort.
Und so sieht mein erster Versuch aus. Hier ist aber schon irgend ein Fehler drin, den ich nicht verstehe. Was mache ich falsch?

Sub Makro1()
Dim a, b As Integer
,Datensätze zählen
a = Application.CountA("Daten".Range("B3:B57").Cells)
b = 1
For i = 1 To a
Range("F5").Select
,mit der Angabe der Datensatznummer (1-50)
,im FORMULAR in Zelle F5 holt sich das Formular
,die Werte aus dem Arbeitsblatt DATEN
ActiveCell.FormulaR1C1 = b
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
b = b + 1
Next i
End Sub

Gruß Jens

Anzeige
Das muß doch ein Klacks sein...
05.06.2003 20:10:28
Jens

.

Re: Druckschleife
05.06.2003 21:21:23
Ramses

Hallo Jens,

warum müsst ihr immer alles anders machen als vorgeschlagen ??


CountA zählt übrigens nur Zahlen. Sind keine Zahlen, oder gemischte Werte, hast du die falsche Anzahl von Datensätzen.

Gruss Rainer


Re: Druckschleife
05.06.2003 21:32:34
PeterW

Hi Rainer,

bist du dir sicher, dass CountA nur nummerische Werte zählt?? Zumindest in XP werden damit alle Werte gezählt.

Gruß
Peter

Ouups,... du hast recht :-(
05.06.2003 21:55:58
Ramses

Hallo,

Da hab ich was durcheinander gebracht und muss ich mich bei Jens wohl entschuldigen :-)

Danke.

Gruss Rainer

wir sind alle nur Menschen :-)
05.06.2003 22:00:05
PeterW

Hallo Rainer,

ging mir eher ums Archiv - deinen Beiträgen kann jeder Nutzer blind vertrauen und deswegen sollte das dort auch richtig erscheinen. :-)

Gruß
Peter


Anzeige
Re: Ouups,... du hast recht :-(
06.06.2003 07:59:13
Jens

Hallo Rainer,
Du must Dich nirgendwo entschuldigen. Vielen Dank für Deine Hilfe. Ich werde das heute ausprobieren. Zu meiner Entschuldigung muß ich sagen, daß ich wirklich keine Ahnung von Makros habe.
Gruß Jens

Toll
06.06.2003 08:28:40
Jens

Das klappt ja tatsächlich!
Das Makro hat gleich 30 Druckaufträge losgejagt!
Vor Schreck hab ich Idiot gleich den Drucker gelöscht...

Gibt es die Möglichkeit einer Abfrage?
"Wollen Sie wirklich 30 Seiten drucken
OK / Abbrechen "

Gruß Jens



... was glaubst Du denn :-)
06.06.2003 09:16:49
Ramses

Hallo Jens


Option Explicit

Sub Makro1()
'Für eine korrekte Deklaration
Dim a As Integer, i As Integer, Qe As Integer
a = Application.WorksheetFunction.CountA(Worksheets("Daten").Range("B3:B57"))
Select Case a
    Case Is > 25
        Qe = MsgBox("Wollen Sie wirklich alle " & a & " drucken ?" _
        & vbCrLf & "Bitte kontrollieren Sie ob genügend Papier vorhanden ist" _
        , vbCritical + vbOKCancel + vbDefaultButton2, "Achtung:")
        If Qe = 2 Then Exit Sub
    Case Is > 10
        Qe = MsgBox("Möchten Sie " & a & " Formulare drucken ?", vbCritical + vbOKCancel + vbDefaultButton2, "Achtung")
        If Qe = 2 Then Exit Sub
    Case Is <= 10
        Qe = MsgBox(a & " Formulare zum Ausdruck bereit ?", vbCritical + vbOKCancel + vbDefaultButton2, "Achtung")
        If Qe = 2 Then Exit Sub
End Select
For i = 1 To a
    Range("F5") = i
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Next i
End Sub
 

     Code eingefügt mit Syntaxhighlighter 1.16

Gruss Rainer

Anzeige
Du bist mein Excel-Guru!! Danke!!!
06.06.2003 09:44:41
Jens



Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige