Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
584to588
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
584to588
584to588
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

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

		

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ß
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

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige