Supportnet / Forum / Tabellenkalkulation
Formular zum Drucken
Frage
Hallo und ein gutes neues Jahr 2006,
ich habe ein Problem in Excel. Meine Arebitsmappe besteht aus mehrern Tabellenblättern, die wiederum aus mehreren Seiten bestehen. Nun möchte ich ein weiteres Tabellenblatt einfügen, in dem ich in einer Art Formulartabelle eintragen kann, welche Seiten gedruckt werden (z.B. Haken gesetzt bei "Tabelle 1, Seite 3" und "Tabelle 4, Seite 2" etc.). Klicke ich dann auf einen Schaltbutton "Drucken", sollen die entsprechend angehakten Seiten geruckt werden.
Ist so etwas möglich???
Ich kenne mich zwar einigermaßen gut in Excel aus, habe jedoch keine Erfahrung mit der Macro-Programmierung, bitte helft mir daher möglichst einfach, was das angeht.
Vielen Dank vorab für Eure Hilfe,
Mike
Antwort 1 von coros
Hy Mike,
auch Dir ein gutes und erfolgreiches Jahr 2006.
Du hättest mal etwas mehr über den Aufbau des Tabellenblattes, in dem die Eintragungen, welches Blatt gedruckt werden sollen, schreiben sollen. Ich habe das mal wie folgt nachempfunden.
Blattname = „Druck“
Spalte A ab Zeile 2 die Blattnamen, Beispiel: A2 = Tabelle1, A3 = Tabelle2, A4 = Tabelle3 usw.
Spalte B bis ?? Zeile 1 die Seitennummer, Beispiel B1 = Seite 1, C1 = Seite 2, D1 = Seite 3 usw.
In die Zellen, die angeben, welche Seite gedruckt werden sollen, muss dann ein x eingetragen werden. Beispiel: Tabelle1 Seite 2 und 3 sollen gedruckt werden, dann muss in den Zellen C2 (Spalte C, da Seite 2 in C1 steht, Zeile 2, da Blattname „Tabelle1 in Zelle A2 steht) und D2 (Spalte D, da Seite 3 in D1 steht, Zeile 2, da Blattname „Tabelle1 in Zelle A2 steht) ein „x“ eingetragen werden. Das nachfolgende Makro ermittelt nun, in welchen Zellen das „x“ steht und druckt dann die entsprechenden Blätter aus. Kopiere das Makro in ein StandardModul und starte es über eine Schaltfläche.
Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf meiner HP in der Rubrik Anleitungen und dort dann in der Anleitungsnummer 3 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.
MfG,
Oliver
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.
auch Dir ein gutes und erfolgreiches Jahr 2006.
Du hättest mal etwas mehr über den Aufbau des Tabellenblattes, in dem die Eintragungen, welches Blatt gedruckt werden sollen, schreiben sollen. Ich habe das mal wie folgt nachempfunden.
Blattname = „Druck“
Spalte A ab Zeile 2 die Blattnamen, Beispiel: A2 = Tabelle1, A3 = Tabelle2, A4 = Tabelle3 usw.
Spalte B bis ?? Zeile 1 die Seitennummer, Beispiel B1 = Seite 1, C1 = Seite 2, D1 = Seite 3 usw.
In die Zellen, die angeben, welche Seite gedruckt werden sollen, muss dann ein x eingetragen werden. Beispiel: Tabelle1 Seite 2 und 3 sollen gedruckt werden, dann muss in den Zellen C2 (Spalte C, da Seite 2 in C1 steht, Zeile 2, da Blattname „Tabelle1 in Zelle A2 steht) und D2 (Spalte D, da Seite 3 in D1 steht, Zeile 2, da Blattname „Tabelle1 in Zelle A2 steht) ein „x“ eingetragen werden. Das nachfolgende Makro ermittelt nun, in welchen Zellen das „x“ steht und druckt dann die entsprechenden Blätter aus. Kopiere das Makro in ein StandardModul und starte es über eine Schaltfläche.
Option Explicit
Sub Drucken()
Dim Wiederholungen_Zeile As Integer, Aktives_Blatt As String, _
letzte_Spalte As Integer, Wiederholungen_Spalte As Integer, erste_Spalte As Integer
Aktives_Blatt = ActiveSheet.Name
For Wiederholungen_Zeile = 1 To Sheets("Druck").Range("A65536").End(xlUp).Row
If Sheets("Druck").Cells(Wiederholungen_Zeile, 1) = Aktives_Blatt Then
letzte_Spalte = Sheets("Druck").Range("IV" & Wiederholungen_Zeile).End(xlToLeft).Column
For Wiederholungen_Spalte = 2 To letzte_Spalte
If Sheets("Druck").Cells(Wiederholungen_Zeile, Wiederholungen_Spalte) <> "" Then
erste_Spalte = Wiederholungen_Spalte
GoTo Weiter
End If
Next
End If
Next
Weiter:
Sheets(Aktives_Blatt).PrintOut From:=erste_Spalte - 1, To:=letzte_Spalte - 1
End Sub
Ich hoffe, Du kommst klar. Bei Fragen melde Dich. Sollte das Makro auf Grund Deines Tabellenblattaufbaus nicht funktionieren, dann lasse Dich mal ein wenig mehr über das Blatt, dass die Daten zum Drucken enthält, aus, denn Hellsehen war hier schon immer ein Problem (eventuell kennst Du ein gutes Hellseher-Forum). ;-)Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf meiner HP in der Rubrik Anleitungen und dort dann in der Anleitungsnummer 3 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.
MfG,
Oliver
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 Hase
Hallo Oliver,
vielen Dank für die Anleitung und Kompliment für Deine hellseherischen Fähigkeiten, so soll das Druckblatt aussehen, Volltreffer!!!
Das mit dem Macro werde ich ausprobieren, schaffe es leider erst morgen. Ich werde Nachricht geben, ob es geklappt hat.
Vielen Dank für die Hilfe und Sorry für meine etwas knappe Beschreibung der Arbeitsmappe. Ich gelobe Besserung...
Viele Grüße,
Mike
vielen Dank für die Anleitung und Kompliment für Deine hellseherischen Fähigkeiten, so soll das Druckblatt aussehen, Volltreffer!!!
Das mit dem Macro werde ich ausprobieren, schaffe es leider erst morgen. Ich werde Nachricht geben, ob es geklappt hat.
Vielen Dank für die Hilfe und Sorry für meine etwas knappe Beschreibung der Arbeitsmappe. Ich gelobe Besserung...
Viele Grüße,
Mike
Antwort 3 von Hase
Hallo Oliver,
(natürlich auch alle anderen, die helfen wollen),
habe den Code eingefügt, eine Schaltfläche gebastelt und das Marco zugewiesen. Die Tabelle entspricht Deiner Bescheibung oben (Spalte A ab A2 = Tabellennamen; Spalte B, C, D, ... Zeile 1 = Seitennamen; Spalte B, C, D, ... Zeile 2 = x oder leer).
Nachdem ich alles voreinander hatte, bekomme ich nun einen Laufzeitfehler ´1004´: "Zahl muss zwischen 1 und 32767 liegen..." Dieser Hinweis führt mich (über "Testen") in den VBA-Editor in die Zeile
Sheets(Aktives_Blatt).PrintOut From:=erste_Spalte - 1, To:=letzte_Spalte - 1
Von da an weiß ich nicht mehr weiter. Ach ja, da ich nur drei Tabellenblattnamen brauchte, habe ich versucht, den Code zu verstehen und in der Zeile
For Wiederholungen_Zeile = 1 To Sheets("Druck").Range("A65536")
den Wert A65536 durch A5 ersetzt. Ich hoffe, dass das nicht der Quell allen Übels ist...
Vielen Dank für die Geduld,
Mike
(natürlich auch alle anderen, die helfen wollen),
habe den Code eingefügt, eine Schaltfläche gebastelt und das Marco zugewiesen. Die Tabelle entspricht Deiner Bescheibung oben (Spalte A ab A2 = Tabellennamen; Spalte B, C, D, ... Zeile 1 = Seitennamen; Spalte B, C, D, ... Zeile 2 = x oder leer).
Nachdem ich alles voreinander hatte, bekomme ich nun einen Laufzeitfehler ´1004´: "Zahl muss zwischen 1 und 32767 liegen..." Dieser Hinweis führt mich (über "Testen") in den VBA-Editor in die Zeile
Sheets(Aktives_Blatt).PrintOut From:=erste_Spalte - 1, To:=letzte_Spalte - 1
Von da an weiß ich nicht mehr weiter. Ach ja, da ich nur drei Tabellenblattnamen brauchte, habe ich versucht, den Code zu verstehen und in der Zeile
For Wiederholungen_Zeile = 1 To Sheets("Druck").Range("A65536")
den Wert A65536 durch A5 ersetzt. Ich hoffe, dass das nicht der Quell allen Übels ist...
Vielen Dank für die Geduld,
Mike
Antwort 4 von coros
Hallo Mike,
dieser Fehler dürfte eigentlich nur auftreten, wenn Du für das entsprechende Tabellenblatt keine Markierung in dem Tabellenblatt "Druck" gesetzt hast. Da ich das immer bei mir gemacht hatte, ist dieser Fehler bei mir nie aufgetreten. Ich habe aber das Makro dahingehend geändert. Tausche das nachfolgende gegen das alte Makro aus.
Den Zellenbereich (von A65536 auf A5), den Du geändert hast, kannst Du so lassen. Allerdings musst Du daran denken, wenn Du mal ein Tabellenblatt nachträgst, auch diesen Bereich in dem Makro mit anzugeben. Wenn Du das bei A65536 belässt, musst Du das nicht. Wobei ich nicht weiß, warum Du das ändern möchtest. Das bringt keinerlei Vorteile, aber auch keine Nachteile.
Ich hoffe, jetzt funktioniert alles. Wenn nicht, dann bitte wieder melden.
MfG,
Oliver
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.
dieser Fehler dürfte eigentlich nur auftreten, wenn Du für das entsprechende Tabellenblatt keine Markierung in dem Tabellenblatt "Druck" gesetzt hast. Da ich das immer bei mir gemacht hatte, ist dieser Fehler bei mir nie aufgetreten. Ich habe aber das Makro dahingehend geändert. Tausche das nachfolgende gegen das alte Makro aus.
Option Explicit
Sub Drucken()
Dim Wiederholungen_Zeile As Integer, Aktives_Blatt As String, _
letzte_Spalte As Integer, Wiederholungen_Spalte As Integer, erste_Spalte As Integer
Aktives_Blatt = ActiveSheet.Name
For Wiederholungen_Zeile = 1 To Sheets("Druck").Range("A65536").End(xlUp).Row
If Sheets("Druck").Cells(Wiederholungen_Zeile, 1) = Aktives_Blatt Then
letzte_Spalte = Sheets("Druck").Range("IV" & Wiederholungen_Zeile).End(xlToLeft).Column
For Wiederholungen_Spalte = 2 To letzte_Spalte
If Sheets("Druck").Cells(Wiederholungen_Zeile, Wiederholungen_Spalte) <> "" Then
erste_Spalte = Wiederholungen_Spalte
GoTo Weiter
End If
Next
End If
Next
Weiter:
If erste_Spalte >= 1 Then
Sheets(Aktives_Blatt).PrintOut From:=erste_Spalte - 1, To:=letzte_Spalte - 1
Else
MsgBox "Sie haben in Blatt " & Chr(34) & "Druck" & Chr(34) & " keine Markierung gesetzt, welches Blatt gedruckt werden soll."
End If
End SubDen Zellenbereich (von A65536 auf A5), den Du geändert hast, kannst Du so lassen. Allerdings musst Du daran denken, wenn Du mal ein Tabellenblatt nachträgst, auch diesen Bereich in dem Makro mit anzugeben. Wenn Du das bei A65536 belässt, musst Du das nicht. Wobei ich nicht weiß, warum Du das ändern möchtest. Das bringt keinerlei Vorteile, aber auch keine Nachteile.
Ich hoffe, jetzt funktioniert alles. Wenn nicht, dann bitte wieder melden.
MfG,
Oliver
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 5 von Hase
Hallo Oliver,
das hat mich schon mal ein Stück weiter gebracht, leider funktioniert es noch nicht einwandfrei. Ich kann zwar eine Markierung "x" setzen, jedoch bekomme ich immer das programmierte Textfenster "Sie haben in Blatt ..."
Kann es evtl. daran liegen, dass ich die "x"-Markierungen teilweise über eine Wenn-Dann-Funktion setzen lasse? Habe es mal ohne die Formeln probiert (Formeln gelöscht und "x" per Hand eingetragen), allerdings auch ohne Erfolg.
Wäre Dir sehr dankbar, wenn Du noch etwas Geduld und Zeit für mich hättest... Vielleicht soll ich Dir die Arbeitsmappe mal mailen?
Grüße,
Mike
das hat mich schon mal ein Stück weiter gebracht, leider funktioniert es noch nicht einwandfrei. Ich kann zwar eine Markierung "x" setzen, jedoch bekomme ich immer das programmierte Textfenster "Sie haben in Blatt ..."
Kann es evtl. daran liegen, dass ich die "x"-Markierungen teilweise über eine Wenn-Dann-Funktion setzen lasse? Habe es mal ohne die Formeln probiert (Formeln gelöscht und "x" per Hand eingetragen), allerdings auch ohne Erfolg.
Wäre Dir sehr dankbar, wenn Du noch etwas Geduld und Zeit für mich hättest... Vielleicht soll ich Dir die Arbeitsmappe mal mailen?
Grüße,
Mike
Antwort 6 von coros
Hi Mike,
wenn das ginge, dann schicke sie mir mal. Meine E-Mailadresse findest Du auf meiner HP unter anderem im Impressum.
MfG,
Oliver
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.
wenn das ginge, dann schicke sie mir mal. Meine E-Mailadresse findest Du auf meiner HP unter anderem im Impressum.
MfG,
Oliver
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 7 von Hase
Hallo Oliver,
auch auf diesem Wege nochmal vielen Dank für die Hilfe bei dem Makro.
Gruß,
Mike
auch auf diesem Wege nochmal vielen Dank für die Hilfe bei dem Makro.
Gruß,
Mike

