Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Formular-Ausdruck





Frage

Hallo, ich habe "Daten" wo die Posten für das "Rechnungsformular" eingegeben werden. Nun ist das "Rechnungsformular" einmal auf zwei und einmal auf eine Seite zu drucken. Das hängt wiederum von einem Zell-Wert ab der im "Rechnungsformular" steht. Wie kann ich jetzt das Rechnungsformular abhängig von dem Zellwert ein- bzw. zweiseitig ausdrucken lassen? Geht so etwas überhaupt? Vielen Dank für Eure Hilfe. Rasful

Antwort 1 von coros

Moin Rasful,

da fehlen noch ein paar Angaben, damit Dir geholfen werden kann. Zum Einen, um welche Zelle handelt es sich, nach deren Zellwertabhängigkeit gedruckt werden soll? Dann ist die Frage bei welchem Zellwert soll Einseitig und bei welchem Wert soll Zweiseitig gedruckt werden? Und noch eine Frage zu ein- bzw. zweiseitigen Druck. Meinst Du mit zweiseitig, dass ein Teil der Rechnung, sagen wir mal Zeile 1 - 35, auf dem einen Blatt und der Rest auf einem zweiten Blatt gedruckt werden soll oder meinst Du die Anzahl der Ausdrucke. Also bei dem einen Wert nur ein Ausdruck und bei dem anderen Wert 2 Kopien? Oder meist Du etwa etwas ganz anderes?

Ich habe Dir mal nur so als Ansatz zwei Makros angefügt. Das Eine druckt in Abhängigkeit des Wertes in Zelle A1 eine Kopie oder zwei Kopien. Bei dem Wert 1 wird eine Seite und bei dem Wert 2 wird die Seite 2x gedruckt. Das zweite Makro druckt wieder in Abhängigkeit der Zelle A1 den Inhalt auf einem oder auf zwei Blätter. Also wieder bei Wert 1 in Zelle A1 wird alles auf einem Blatt gedruckt. Bei dem Wert 2 wird der untere Seitenrand so eingestellt, dass er sich in der Mitte des Dokuments befindet und somit der Tabelleninhalt auf zwei Blätter aufgeteilt wird.

Beide Makros sind in ein StandarsModul einzufügen.

Sub Kopien_drucken()
If Range("A1") = 1 Then
ActiveWindow.SelectedSheets.PrintOut _
Copies:=1, Collate:=True
Else
ActiveWindow.SelectedSheets.PrintOut _
Copies:=2, Collate:=True
End If
End Sub


Sub Mehrseitig_drucken()
If Range("A1") = 1 Then
With ActiveSheet.PageSetup
.BottomMargin = Application.InchesToPoints(5.9)
End With
ActiveWindow.SelectedSheets.PrintOut _
Copies:=1, Collate:=True
Else
With ActiveSheet.PageSetup
.BottomMargin = Application.InchesToPoints(0.9)
End With
ActiveWindow.SelectedSheets.PrintOut _
Copies:=1, Collate:=True
End If
End Sub


Wenn eine andere Zelle für den Ausdruck als A1 zuständig sein soll, dann musst Du in der Zeile

If Range("A1") = 1 Then

die Zellbezeichnung A1 gegen eine andere Zelle ändern. Die Zahl, die ja die Anzahl der Ausdrucke angibt ist in dem Beispiel die 1. Soll dort eine andere Zahl zuständig sein, ändere in der selben Zeile die Zahl hinter dem Gleichheitszeichen (=). Den Wert für den unteren Seitenrand in dem 2.Makro kannst Du in den Zeile

.BottomMargin = Application.InchesToPoints(5.9)


und

.BottomMargin = Application.InchesToPoints(0.9)

ändern. Dort musst Du einfach mal verschiedene Wert eintragen und etwas ausprobieren, bis es so ist wie Du es Dir vorstellst.

Da ich nicht weiß, ob Du Dich mit VBA (Visual Basic) auskennst, kommt hier eine kurze Anweisung, wie Du den Code in Deine Tabelle bekommst.

1. Markiere die Anweisung aus diesem Beitrag und Kopiere (Strg c) diesen.

2. Klicke in Deiner Exceldatei in der Menüleiste nacheinander auf Extras => Makro => Visual Basic Editor oder drücke die Tastenkombination Alt F11

3. In dem neu geöffneten Fenster suche auf der linken Seite nach dem Eintrag VBA Projekt(Hier der Name Deiner Tabelle) und klicke doppelt auf diesen Eintrag

4. Klicke danach nacheinander in der Menüleiste auf Einfügen => Modul.

5. Füge nun die vorher kopierte Anweisung in das rechte leere Fenster ein.

Aufrufen kann man solch ein Makro z.B. über eine Schaltfläche. Da ich nicht weiß, ob Du weißt, wie man eine Befehlsschaltfläche in ein Tabellenblatt einfügst, kommt hier eine kurze Anweisung.

1. Gehe in der Menüleiste auf Ansicht => Symbolleiste => Steuerelement-Toolbox

2. Klicke auf die 6.Schaltfläche von links (Schaltflächenkommentar: Befehlsschaltfläche)

3. Positioniere die Schaltfläche in Deinem Tabellenblatt und passe gegebenenfalls die Größe an.

4. Klicke in der Symbolleiste auf die 3.Schaltfläche von links (Schaltflächenkommentar: Code anzeigen).

5. In das geöffnete Fenster schreibst Du zwischen die Texte “Private Sub CommandButton1_Click()“ und “End Sub“ in die Leerzeile Call Makroname oder nur der Makroname.

6. Klicke in der Symbolleiste auf die erste Schaltfläche von links um den Entwurfmodus zu beenden (Schaltflächenkommentar: Entwurfmodus beenden).

Wenn Du alles richtig gemacht hast, sollte das Makro, nachdem Du die Schaltfläche betätigt hast, abgearbeitet werden.

Du solltest zum Abschluss noch die Sicherheitseinstellung, die beim Öffnen der Datei abgefragt wird, kontrollieren. Klicke dazu nacheinander in der Menüleiste wieder auf Extras => Makro und dann auf Sicherheit.... Gehe, falls nicht schon angezeigt, auf die Registerkarte Sicherheitsstufe und schaue dort nach, ob die Einstellung Mittel aktiviert ist. Wenn nicht, aktiviere diese Einstellung, da sonst der Code nicht ausgeführt werden kann. Beim nächsten Öffnen Deiner Datei kommt eine Abfrage, ob Makros aktiviert oder deaktiviert werden sollen. Klicke auf aktivieren und der Code wird ausgeführt.

So, vielleicht ist ja etwas brauchbares für Dich dabei. Wenn nicht, solltest Du die von mir oben gestellten Fragen beantworten, dann kann man Dir das entsprechende Makro erstellen.

MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 2 von Rasful

Hallo coros,
vielen Dank für Deine schnelle Hilfe.
Nun, die Anzahl der Seiten bezieht sich auf "Daten!B12=1" dann soll nur die 1. Seite gedruckt werden. Da die 1 Seite variabel ist, wird sie einmal als Zusammenfassung und einmal als gegliederte Rechnung ausgedruckt. Also, wenn(daten!b12=1) dann nur die 1. Seiten sonst noch die Aufgliederung dazu, also beide Seiten. Ich hoffe ich habe es verständlich erklärt.
Ich werde jetzt mal die Makros von dir ausprobieren, ich melde mich dann wieder. Vielen Dank schon mal.
Bayerische Grüße
Rasful

Antwort 3 von coros

Hi Rasful,

nachdem Du erklärt hast, was Du mienst, nehme ich mal an, das keines der beiden Makros den Zweck erfüllen wird. Ich habe daher noch ein neues für Dich. Dieses Makro ist ebenfalls in ein StandardModul zu kopieren.

Sub Kopien_drucken()
If Worksheets("Daten").Range("B12") = 1 Then
Worksheets("Daten").PrintOut From:=1, To:=1, _
Copies:=1, Collate:=True
Else
Worksheets("Daten").PrintOut From:=1, To:=2, _
Copies:=1, Collate:=True
End If
End Sub


Wenn beim Ausführen des Makrors in Tabellenblatt "Daten" in Zelle B12 eine 1 steht, dann wird nur die erste Seite gedruckt. Wenn in der zelle ien andere Zahl steht, werden Seite 1 und 2 gedruckt.
Wie Du das Makro einfügst und wie es gestartet wird, habe ich in meiner ersten Antwort glaube ich lang und breit erklärt.
Ich hoffe, dass dieses Makro eher zu gebrauchen ist. Wenn nicht oder bei Änderungswünschen melde Dich wieder.

MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 4 von Rasful

Hallo coros,
das 1. Makro war schon super, nur wurden beide Seiten gedruckt. Jetzt teste ich das neue Makro, abr ich glaube jetzt schon sagen zu können, dass es einwandfrei klappt. Nochmals VIELEN VIELEN DANK.
Falls es Probleme geben sollte, melde ich mich noch einmal.
Bis bald
Rasful

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: