Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Problem mit Makro "Workbook_BeforePrint"

Problem mit Makro "Workbook_BeforePrint"
14.03.2005 12:39:27
Martin
Hi All!
Ich habe ein Problem mit einem Makro (was ich aber auch nur aus aus einem anderen Beitrag kopiert habe).
Ziel des Makros ist es, beim Ausdruck in Excel (egal ob das angezeigt tabellenblatt oder die gesamte Arbeitsmappe) nut einen definierten Bereich (printarea) auszudrucken.
Dazu habe ich in die jeweiligen Tabellen folgenden Code geschrieben:
Public

Sub drucke()
Application.EnableEvents = False
ActiveSheet.PageSetup.PrintArea = "A1:C39"
ActiveSheet.PageSetup.Orientation = xlPortrait
ActiveSheet.PrintOut
Application.EnableEvents = True
End Sub

und in diese Arbeitsmappe:
Public

Sub Workbook_BeforePrint(Cancel As Boolean)
Cancel = True
drucke
End Sub

Leider bekomme ich beim Klicken auf die Schaltfläche Drucken jedesmal eine Fehlermeldung("Fehler beim Kompilieren

Sub oder 

Function nicht definiert")
Danach wird aber auch so wie es sein soll, der definierte Bereich ausgedruckt.
Doch warum bekomme ich die Fehlermeldung?
Danke für die ggf. folgenden Tips!
Martin

		
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Problem mit Makro "Workbook_BeforePrint"
14.03.2005 12:55:32
Uduuh
Hallo,
Hallo,
das Makro 'drucke' muss in ein normales Modul.
Gruß aus'm Pott
Udo

AW: Problem mit Makro "Workbook_BeforePrint"
14.03.2005 13:27:44
Martin
Hi!
Tut mir ja leid, aber ich glaube ich verstehe nicht ganz, as ein "normales Modul" ist. Etwa ohne Public am Anfang?
Also in "dieseArbeitsmappe":

Sub Workbook_BeforePrint(Cancel As Boolean)
Cancel = True
drucke
End Sub

und dann in den Tabellen 1 bis X:

Sub drucke()
Application.EnableEvents = False
ActiveSheet.PageSetup.PrintArea = "xx:xx"
ActiveSheet.PageSetup.Orientation = xlPortrait
ActiveSheet.PrintOut
Application.EnableEvents = True
End Sub

Anzeige
AW: Problem mit Makro "Workbook_BeforePrint"
14.03.2005 13:52:26
u_
Hallo,
im VB-Editor Rechtsklick auf dein Projekt, Einfügen - Modul und den Code da rein kopieren. In den Klassenmodulen (Tabelle1, Tabelle2 etc) wird das Makro nicht gefunden.
Gruß
Leider noch nicht ganz
14.03.2005 14:17:20
Martin
Danke hat zwar ohne Fehlermeldung funktioniert, aber...
ich möchte allerdings in den einzelnen Tebellenblättern unterschiedliche Print-areas definieren. Beispielweise in Tabellenblatt 1 A1 bis C40 in Blatt 2 A1 bis D50 usw.
Die jetzige Lösung würde also nur auf einem Blatt funktionieren.
Daher müsste ich irgendeinen Verweis auf eine Printarea in das Modul schreiben, die in den einzelnen Blättern separat definiert ist.
Anzeige
AW: Leider noch nicht ganz
14.03.2005 14:59:14
u_
Hallo,
wenn der Druckbereich für jedes Blatt statisch ist, lege ihn doch einfach fest!
Dann brauchst du auch kein Makro.
Gruß
AW: Leider noch nicht ganz
14.03.2005 15:21:24
Martin
Danke, dieses Problem ist gelöst.
Warum bin ich nicht selbst auf diese Idee gekommen. Ganz einfach: Weil nach etwas längerer Benutzung viele Punkte im Menü einfach mal automatisch ausgblendet werden.
Wenn Du versiert bist, dann kann ich Dir vielleicht noch die etwas einfachere Frage stellen, wie man Zellen in Abhängigkeit von anderen Zelleninhalten formatiert und sperrt.
Wenn also In Zelle B2 "Nein" steht, müsste ich zwei andere Zelle (B7 und B9) sperrren können bzw. die Formatierung ändern können. Das dass komplette Arbeitsblatt bis auf einige (meinetwegen 10 Zellen) schon mal komplett gesperrt ist, müssten zusätzlich allerdings ohne den Blattschutz auszuheben, 2 weitere Zellen gesperrt werden. So dass man nach Eingabe von "Nein" und bei Betätigung von Enter diese beiden Zellen (B7 und B9) überspringt.
Gruß
Anzeige
AW: Leider noch nicht ganz
14.03.2005 15:39:42
u_
Hallo,
das Format kannst du (in Grenzen) über die bedingte Formatierung festlegen.
Für die Sperre kommt nur VBA in Frage.
In den Code der Tabelle:

Private Sub Worksheet_Change(ByVal Target As Range)
Select Case Target.Address(0, 0)
Case "B7", "B9"
If LCase(Range("B2")) = "nein" Then
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
End If
End Select
End Sub

Gruß
Anzeige
AW: Leider noch nicht ganz
14.03.2005 18:00:06
Martin
Danke!
Ich werde das mal ausprobieren und demnächst meine VB-Kenntnisse etwas erweitern.
Gruß
Martin
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige