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

PrintArea

PrintArea
02.02.2006 19:20:32
Ernst
Guten Abend Forum
Etwas stimmt mit meinem Code unten noch nicht!
- Wenn in der Zelle B5 nichts steht, so soll nichts gedruckt werden.
- Wenn in der Zelle B5 etwas steht, so soll der Bereich B1 bis 071 gedruckt werden.
- Wenn in der Zelle B76 etwas steht, so soll der Bereich B1 bis 0141 gedruckt werden.
- Wenn in der Zelle B147 etwas steht, so soll der Bereich B1 bis 0213 gedruckt werden.
Kann mir jemand den Code richtg schreiben? Für eine Antwort bin ich dankbar.
mfg
Ernst Dunkel

Private Sub worksheet_change(ByVal Target As Excel.Range)
Select Case Range("B147").Value
Case Is <> ""
ActiveSheet.PageSetup.PrintArea = "$B$1:$O$213"
Case Else
ActiveSheet.PageSetup.PrintArea = "$B$1:$O$141"
End Select
Select Case Range("B76").Value
Case Is <> ""
ActiveSheet.PageSetup.PrintArea = "$B$1:$OG$141"
Case Else
ActiveSheet.PageSetup.PrintArea = "$B$1:$O$71"
End Select
End Sub

24
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: PrintArea
02.02.2006 20:55:50
Josef
Hallo Ernst!
Erstmal würde ich dazu nicht das "Worksheet_Change" Ereignis nehmen, weil die
anpassung ja nur vor dem Ausdrucken geschehen muss.
Probier mal diesen Code in "DieseArbeitsmappe".
' **********************************************************************
' Modul: DieseArbeitsmappe Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Workbook_BeforePrint(Cancel As Boolean)
With ActiveSheet 'oder Sheets("Tabelle1")
  If .Range("B5") = "" Then
    .PageSetup.PrintArea = ""
    Cancel = True
    Exit Sub
  End If
  
  If .Range("B5") <> "" Then .PageSetup.PrintArea = "B1:O71"
  If .Range("B76") <> "" Then .PageSetup.PrintArea = "B1:O141"
  If .Range("B147") <> "" Then .PageSetup.PrintArea = "B1:O213"
  
End With
End Sub


'******************************
'* Gruß Sepp
'*
'* Rückmeldung wäre nett!
'******************************

Anzeige
AW: PrintArea
02.02.2006 22:25:08
Ernst
Hallo Sepp
Vielen Dank für Deine Bemühung.
Ich habe den Code in DieseArbeitsmappe eingefügt. Jedoch kommt bei:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
With ActiveSheets("Tabelle17") 'hier Fehlermeldung
die Meldung Sub oder Function nicht definiert.
Mache ich was falsch?
AW: PrintArea
02.02.2006 22:47:27
Josef
Hallo Ernst!
Es heist entweder

With ActiveSheet

oder

With Sheets("Tabelle17")

'******************************
'* Gruß Sepp
'*
'* Rückmeldung wäre nett!
'******************************

Anzeige
AW: PrintArea
02.02.2006 23:02:56
Ernst
Hallo Sepp
Dies hatte ich auch schon versucht, funktionierte jedoch nicht!
AW: PrintArea
02.02.2006 23:25:05
Josef
Hallo Ernst!
Ich habe jetzt eine Tabelle nachgebaut und es läuft ohne Probleme!
Heist die Tabelle auch "Tabelle17"?
Läuft da sonst noch ein Code vor/beim Drucken?
'******************************
'* Gruß Sepp
'*
'* Rückmeldung wäre nett!
'******************************

Anzeige
AW: PrintArea
Ernst
Hallo Sepp
Habe den Code nun auch in eine neue leere Arbeitsmappe eingefügt.
Funktioniert dort nun, jedoch wenn in Tabelle17 nichts steht, dann lassen sich die anderen Tabellen nicht drucken.
mfg
Ernst Dunkel
AW: PrintArea
02.02.2006 23:45:41
Josef
Hallo Ernst!
Das lässt sich so umgehen!
' **********************************************************************
' Modul: DieseArbeitsmappe Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Workbook_BeforePrint(Cancel As Boolean)
With ActiveSheet
  If .Name = "Tabelle17" Then
    If .Range("B5") = "" Then
      .PageSetup.PrintArea = ""
      Cancel = True
      Exit Sub
    End If
    
    If .Range("B5") <> "" Then .PageSetup.PrintArea = "B1:O71"
    If .Range("B76") <> "" Then .PageSetup.PrintArea = "B1:O141"
    If .Range("B147") <> "" Then .PageSetup.PrintArea = "B1:O213"
  End If
End With
End Sub


'******************************
'* Gruß Sepp
'*
'* Rückmeldung wäre nett!
'******************************

Anzeige
AW: PrintArea
02.02.2006 23:53:35
Ernst
Hallo Sepp
Vielen Dank für Deine Bemühungen. Du bist mir sicher nicht böse, wenn ich Morgen an dem Ding weiter arbeite.
Darf ich mich Morgen wieder melden, wenn ich Probleme habe?
P.S. gehhst du auch schlafen?
mfg
Ernst Dunkel
AW: PrintArea
Ernst
Guten Tag Sepp
Vielen Dank für deinen Code, im Prinzip funktioniert er, jedoch hat er einen Haken.
Die Tabelle17 ist ein Formular welches ausgefüllt werden muss, d.h., im Bereich B1 bis O213 befinden sich Zellen welche belegt sind, jedoch nicht massgebend sind ob der Bereich gedruckt werden soll. Mit deinem Code funktioniert das nicht ganz.
Kannst du mir nochmals helfen?
mfg
Ernst Dunkel
Mit
**********************************************************************
' Modul: DieseArbeitsmappe Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************
Option Explicit

Private Sub Workbook_BeforePrint(Cancel As Boolean)
With ActiveSheet
If .Name = "Tabelle17" Then
If .Range("B5") = "" Then
.PageSetup.PrintArea = ""
Cancel = True
Exit Sub
End If
If .Range("B5") <> "" Then .PageSetup.PrintArea = "B1:O71"
If .Range("B76") <> "" Then .PageSetup.PrintArea = "B1:O141"
If .Range("B147") <> "" Then .PageSetup.PrintArea = "B1:O213"
End If
End With
End Sub

Anzeige
AW: PrintArea
03.02.2006 09:58:23
Josef
Hallo Ernst!
"Mit deinem Code funktioniert das nicht ganz"
Kannst du etwas präziser werden?
Die Kriterien für den Druckberreich sind die Zellen B5, B76 und B147.
Das war doch was du wolltest!
'******************************
'* Gruß Sepp
'*
'* Rückmeldung wäre nett!
'******************************

Anzeige
AW: PrintArea
03.02.2006 13:14:09
Ernst
Hallo Sepp
Entschuldige, dass ich mich erst jetzt melde, ich habe nicht mit deiner Antwort schon jetzt gerechnet, ich dachte du klickst dich erst am Abend ein, darum meine Frage wann schläfst du.
Die Kriterien sind richtig.
- wenn in B147 ein Wert eingetragen ist, so wird der Bereich B1 bis O243 gedruckt
- wenn in B76 ein Wert eingetragen ist, so wird der Bereich B1 bis O141 gedruckt
- wenn in B5 ein Wert eingetragen ist, so wird der Bereich B1 bis O71 gedruckt
- wenn in B5 kein Wert eingetragen ist, so wird die Tabelle17 nicht gedruckt, jdeoch die anderen
Ich habe fest gestellt, wenn in B5 nichts steht, jedoch z.B. in B6 ein Wert steht, so wird das Blatt troztdem gedruck ob wohl B6 kein Druckkriterium ist.
Ich hoffe, dass ich mich richtig ausgedrückt habe und verbleibe
mfg
Ernst Dunkel
Anzeige
AW: PrintArea
03.02.2006 13:23:28
Josef
Hallo Ernst!
Kann ich nicht nachvollziehen!
Wenn B5 leer ist, dann wird auch nichts gedruckt, egal ob in B6 oder einer
anderen Zelle in Spalte B etwas steht!
Ist B5 bei dir wirklich leer?
Oder steht da vielleicht etwas drin, das nur nicht angezeigt wird?
'******************************
'* Gruß Sepp
'*
'* Rückmeldung wäre nett!
'******************************

Anzeige
AW: PrintArea
03.02.2006 14:16:09
Ernst
Hallo Sepp
Entschuldige, dass ich dich nerve. Ich gebe dir recht, wenn B5 leer ist wird das Blatt als solches nicht gedruckt. Aber wenn du auf eine andere Tabelle wechseltst und dann -Datei -Drucken -Gesasmmte Arbeitsmappe wählst, dann wird trotzdem, wenn z.B. in Zelle B1 was steht die nicht zudruckede Seite gedruckt.
mfg
Ernst Dunkel
AW: PrintArea
03.02.2006 16:22:54
Josef
Hallo Ernst!
Nein, du nervst nicht!
Wenn du die gesammte Mappe druckst, werden immer alle Blätter gedruckt!
Alternative, den Druck über ein Makro aufrufen.
' **********************************************************************
' Modul: Modul2 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub AlleDrucken()
Dim objSh As Worksheet

For Each objSh In Worksheets
  With objSh
    If .Name = "Tabelle17" Then
      If .Range("B5") = "" Then
        .PageSetup.PrintArea = ""
      Else
        .PageSetup.PrintArea = "B1:O71"
        If .Range("B76") <> "" Then .PageSetup.PrintArea = "B1:O141"
        If .Range("B147") <> "" Then .PageSetup.PrintArea = "B1:O213"
        .PrintOut
      End If
    Else
      .PrintOut
    End If
  End With
Next

End Sub


'******************************
'* Gruß Sepp
'*
'* Rückmeldung wäre nett!
'******************************

Anzeige
AW: PrintArea
03.02.2006 16:39:39
Ernst
Hallo Sepp
vielen Dank für deine Bemühungen.
Bitte maile mir deine Postadresse auf:
e.dunkel@bluewin.ch
mit freundlichen Grüssen
Ernst Dunkel
AW: PrintArea
06.02.2006 09:10:11
Ernst
Guten Tag Sepp
Habe noch ein kleines Problem mit deinem Code. Er funktioniert in allen leeren Arbeitsmappen, füge ich den Code in die zu verwendende Arbeitsmappe ein, kommt die Fehlermeldung bei ".PrintOut"
Was könnte dies sein?
mfg
Ernst Dunkel
Option Explicit

Sub AlleDrucken()
Dim objSh As Worksheet
For Each objSh In Worksheets
With objSh
If .Name = "11.1 U-Werte" Then
If .Range("B5") = "" Then
.PageSetup.PrintArea = ""
Else
.PageSetup.PrintArea = "B1:O71"
If .Range("B76") <> "" Then .PageSetup.PrintArea = "B1:O141"
If .Range("B147") <> "" Then .PageSetup.PrintArea = "B1:O213"
.PrintOut
End If
Else
'        .PrintOut Copies:=1, Collate:=True
'       .PrintOut Copies:=1, Preview:=True, Collate:=True
.PrintOut             'hier kommt die Fehlermeldung
End If
End With
Next
End Sub

AW: PrintArea
06.02.2006 09:48:57
Josef
Hallo Ernst!
Wie lautet die Fehlermeldung?
'******************************
'* Gruß Sepp
'*
'* Rückmeldung wäre nett!
'******************************

AW: PrintArea
06.02.2006 09:55:07
Ernst
Hallo Sepp
Es ist keine Fehlermeldung, sobald ich das Makro starte muss bei ".PrintOut" debugt werden.
AW: PrintArea
06.02.2006 10:21:02
Josef
Hallo Ernst!
Der Debuger springt ohne Meldung an?
Geh' den Code mal mit F8 im Einzeschritt durch, was passiert dann?
'******************************
'* Gruß Sepp
'*
'* Rückmeldung wäre nett!
'******************************

AW: PrintArea
06.02.2006 10:35:18
Ernst
Hallo Sepp
Nach drücken von F8, kommt der Laufzeitfehler 1004, Die Methode PrintOut für das Objekt Worksheet ist fehlgeschlagen.
alles Klar!
06.02.2006 10:55:35
Josef
Hallo Ernst!
Du hast ausgeblendete Tabellen in der Mappe!
So geht's!
Sub AlleDrucken()
Dim objSh As Worksheet

For Each objSh In Worksheets
  With objSh
    If objSh.Visible Then
      If .Name = "11.1 U-Werte" Then
        If .Range("B5") = "" Then
          .PageSetup.PrintArea = ""
        Else
          .PageSetup.PrintArea = "B1:O71"
          If .Range("B76") <> "" Then .PageSetup.PrintArea = "B1:O141"
          If .Range("B147") <> "" Then .PageSetup.PrintArea = "B1:O213"
          .PrintOut
        End If
      Else
        .PrintOut
      End If
    End If
  End With
Next
End Sub


'******************************
'* Gruß Sepp
'*
'* Rückmeldung wäre nett!
'******************************

AW: alles Klar!
06.02.2006 17:27:58
Ernst
Hallo Sepp
Sorry, dass ich dir verschwiegen haben, dass Tabellen ausgeblendet sind!
Nun funktioniert der Code. Hat aber noch einen kleinen schönheits Fehler, die Sheets werden zum Drucker einzeln gesendet (Seite um Seite und nicht Seite 1 bis ...).
Damit kann ich leben, wenn du aber eine Musterlösung hast, bin ich nicht abgeneigt sie zu übernehmen.
Mit freundlichen Grüssen aus der Schweiz
Ernst Dunkel
AW: alles Klar!
06.02.2006 18:58:43
Josef
Hallo Ernst!
Die Tabellen werden auch einzeln zum Drucker geschickt, das geht so nicht anders!
Gruß Sepp
AW: alles Klar!
06.02.2006 20:16:32
Ernst
Hallo Sepp
Nun sollte dieses Kaptiel abgeschlossen sein. Sepp nochmals recht herzlichen Dank für deine Hilfe.
Mit freundlichen Grüssen
Ernst Dunkel

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige