Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1628to1632
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
Inhaltsverzeichnis

VBA - Anwendung funktioniert nicht

VBA - Anwendung funktioniert nicht
04.07.2018 09:23:53
Linda
Hi,
um meinen Kollegen die Anwendung zu erleichtern, habe ich alle Zellen in die sie etwas eintragen müssen gelb markiert.
Jetzt möchte ich aber nicht, dass die gelben Markierungen ausgedruckt werden.
Ich hab gedacht ich bekomme das hin, aber es funktioniert leider nicht. Es kommt kein Debugger, es werden nur einfach die gelben Felder weiterhin mit ausgedruckt.
Ich habe im Bereich Arbeitsmappe folgenden VBA-Code eingetragen:

Private Sub Workbook_BeforePrint (Cancel As Boolean)
Application.EnableEvents = False
Cancel = True
If ActiveSheet.Name = "RECHNUNG" Then
With ActiveWorkbook
.Sheets("RECHNUNG").Range("A1:J62").Interior.ColorIndex = xlNone
.Sheets("RECHNUNG").PrintOut
.Sheets("RECHNUNG").Range("GELB2").Interior.ColorIndex = 6
End With
End If
If ActiveSheet.Name = "LIEFERSCHEIN" Then
With ActiveWorkbook
.Sheets("LIEFERSCHEIN").Range("A1:J62").Interior.ColorIndex = xlNone
.Sheets("LIEFERSCHEIN").PrintOut
.Sheets("LIEFERSCHEIN").Range("GELB1").Interior.ColorIndex = 6
End With
End If
Ende:
Application.EnableEvents = True
End Sub
Weiß von Euch jemand was ich falsch gemacht habe?
Grüße
Linda

37
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - Anwendung funktioniert nicht
04.07.2018 09:43:38
ChrisL
Hi Linda
Sieht OK aus. Lade eine Beispieldatei damit man dein Problem nachvollziehen kann.
cu
Chris
Range GELBn ist also gleich A1:J62 ? (owT)
04.07.2018 09:48:57
EtoPHG

AW: Range GELBn ist also gleich A1:J62 ? (owT)
04.07.2018 10:02:28
Linda
Hi,
A1:J62 ist die komplette Seite.
GELB1 sind einzelne Zellen im Blatt LIEFERSCHEIN
GELB2 sind einzelne Zellen im Blatt RECHNUNG
ich versuch mal eine Excel Datei hochzuladen. Ich muss nur erst die Mappe bereinigen...
AW: VBA - Anwendung funktioniert nicht
04.07.2018 10:00:05
UweD
Hallo
Ich vermute, du hast die events ausgeschaltet (evtl durch einen Fehlerabbruch)
Deshalb immer On Error verwenden, damit die Event immer wieder eingeschaltet werden
1x das hier laufen lassen
Sub onon()
Application.EnableEvents = True
End Sub



Um den Debugger zu erzwingen kannst du ein STOP einbauen

Private Sub Workbook_BeforePrint(Cancel As Boolean)
On Error GoTo Ende
Application.EnableEvents = False
Stop
Cancel = True
If ActiveSheet.Name = "RECHNUNG" Then
With ActiveWorkbook
.Sheets("RECHNUNG").Range("A1:J62").Interior.ColorIndex = xlNone
.Sheets("RECHNUNG").PrintOut
.Sheets("RECHNUNG").Range("GELB2").Interior.ColorIndex = 6
End With
End If
If ActiveSheet.Name = "LIEFERSCHEIN" Then
With ActiveWorkbook
.Sheets("LIEFERSCHEIN").Range("A1:J62").Interior.ColorIndex = xlNone
.Sheets("LIEFERSCHEIN").PrintOut
.Sheets("LIEFERSCHEIN").Range("GELB1").Interior.ColorIndex = 6
End With
End If
Ende:
Application.EnableEvents = True
End Sub

LG UweD
Anzeige
AW: VBA - Anwendung funktioniert nicht
04.07.2018 10:12:23
Linda
Hi Uwe,
ich glaube verstehe nicht ganz...
Ich habe die Events eingeschaltet, wie von dir vorgeschlagen.
Wozu soll der Stop sein? Der Code stopt und öffnet den Debugger...
Ohne den Stop, habe ich leider noch immer gelbe Felder im Ausdruck :-(
Dann waren es vermutlich nicht die Events.
Datei Upload funktioniert nicht
04.07.2018 10:33:30
Linda
Ich wollte gerade meine Mappe hochladen, funktioniert leider nicht. Es ist eine .xlsm Datei...
AW: Datei Upload funktioniert nicht
04.07.2018 10:41:22
Bernd
Hi,
vermutlich liegt es am Dateinamen, betitle sie einfach mit Test, dann sollte es gehen.
Oder die datei ist zu groß, max sind 300 KB
MfG Bernd
AW: Datei Upload funktioniert nicht
04.07.2018 10:42:07
ChrisL
Auch xlsm kann man hochladen.
Die Größe der Datei ist auf etwa 300 KB begrenzt, bitte beachten. Die hochzuladende Datei darf sich nicht in einem Verzeichnis mit einem Leerzeichen im Namen oder mit einer sehr grossen Pfadtiefe befinden. Zudem darf die Datei selbst keine Leerzeichen im Namen beinhalten. Wenn der Upload nicht funktioniert, verschieben Sie die Datei in ein Root-Verzeichnis wie z.B. C:\ und versuchen es noch einmal.
Anzeige
Datei funktioniert owT
04.07.2018 10:55:52
ChrisL
.
AW: Hier kommt die Datei
04.07.2018 11:03:09
PeterK
Hallo
Kann es sein das Du die PDF konvertierung meinst? (Hier wird das GELB ja nicht korrigiert)
AW: VBA - Anwendung funktioniert nicht
04.07.2018 10:39:36
mmat
Hi,
warum schaltest du die Events aus?
Probier das mal
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim SheetName As String, RangeName As String
Cancel = True
SheetName = ActiveSheet.Name
If (SheetName = "RECHNUNG") Then RangeName = "Gelb2" Else RangeName = "Gelb1"
ActiveSheet.Range(RangeName).Interior.ColorIndex = xlNone
' ActiveSheet.PrintOut
MsgBox "ich drucke jetzt" 'Wegen der Papierverschwendung. Jetzt gucken ob das Gelb noch da  _
ist!
ActiveSheet.Range(RangeName).Interior.ColorIndex = 6
End Sub

Anzeige
AW: VBA - Anwendung funktioniert nicht
04.07.2018 12:28:12
Linda
Super! Jetzt funktioniert es. Danke mmat!
Leider noch nicht beim PDF - Drucken.
Gibt es hierfür noch eine Anweisung, die ich einfügen kann?
AW: VBA - Anwendung funktioniert nicht
04.07.2018 12:47:08
mmat
pdf ist doch was ganz anderes

Sub PDFgenerieren()
Dim strFile As String, SheetName
strFile = ActiveWorkbook.Path & "\" & ActiveSheet.Range("I19").Value & "_" & ActiveSheet. _
Range("A12").Value & "_" & Range("A24").Value & ".pdf"
SheetName = ActiveSheet.Name
If (SheetName = "RECHNUNG") Then RangeName = "Gelb2" Else RangeName = "Gelb1"
ActiveSheet.Range(RangeName).Interior.ColorIndex = xlNone
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=strFile, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=False
ActiveSheet.Range(RangeName).Interior.ColorIndex = 6
End Sub

Anzeige
AW: VBA - Anwendung funktioniert nicht
04.07.2018 13:01:22
Linda
Hi mmat,
da war ich wohl auf dem Holzweg. Ich dachte Drucken und PDF-Drucken funktioniert gleich.
Danke für den Code. Mein Debugger meckert leider in diesem Bereich:
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=strFile, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=False
Ich komm hier leider nicht weiter. PDF über VBA drucken hab ich bis jetzt noch nicht gemacht!
Debugger meckert ab ActiveSheet.ExportAsFixedForma
04.07.2018 13:07:54
Linda
.
Excel erkennt den Code als Druckvorgang
04.07.2018 13:15:13
Linda
Was ich nicht verstehe, wenn ich deinen Code eingebe, scheint Excel dies doch als Druckvorgang zu erkennen. Denn es wird zum Code "Private Sub Workbook_BeforePrint" gewechselt. Das erkenne ich daran, dass die MsgBox erscheint, welche ich dort drin habe....
Danach folgt der DEBUGGER und der Bereich ist gelb:
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=strFile, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=False
Anzeige
PDF-Export
04.07.2018 15:13:15
mmat
Hallo Linda,
der Code mit dem PDF stammt aus deiner Datei, er wird ausgeführt, wenn man den Knopf "PDF" anklickert.
Ich hab nur etwas ergänzt. Bei mir funktioniert er. Mit dem Drucken hat das garnix zu tun.
Die Zeile, der von deinem Debugger angemäkelt wird, ist auch in deiner Datei schon enthalten. Vielleicht in hier im Forum was mit dem Kopieren schief gegangen
AW: VBA - Anwendung funktioniert nicht
04.07.2018 12:55:07
UweD
Hallo
Wenn die die Exceleigene Exportfunktion zum Erstellen einer PDF verwendest,...
dafür gibt es kein eigenes Event
Wenn du z.B. den PDF creator beim Drucken verwendest, dann müsste dein Makro laufen.
Du kannst den PDF- Druck aber über ein eigenes Makro ausführen.
LG UweD
Anzeige
AW: VBA - Anwendung funktioniert nicht
04.07.2018 13:03:26
Linda
Hi Uwe,
ich verwende bereits den PDF creator beim Drucken. Das funktioniert leider nicht. Excel erkennt das wohl nicht als DRUCKEN, wenn man den PDF-Creator auswählt.
AW: VBA - Anwendung funktioniert nicht
04.07.2018 13:09:56
UweD
Bei mir schon


Nochmal zu dem Stop
Wenn du Drucken, auf Drucker PDF Creator ausführst.. Kommt dann der Debugger oder nicht?
LG UweD
AW: VBA - Anwendung funktioniert nicht
04.07.2018 13:19:02
Linda
Nein, der Debugger kommt nicht . Es passiert einfach gar nichts. Normalerweise öffnet sich doch dann ein Fenster zum Dateipfad und Name einzugeben.....
Excel Version?
04.07.2018 13:20:10
UweD
AW: Excel Version? -2010
04.07.2018 13:21:08
Linda
.
AW: Excel Version? -2010
04.07.2018 13:21:29
Linda
.
Sorry ich bin raus
04.07.2018 14:25:00
UweD
Also ich tippe immer noch auf ausgeschaltete Events.
Bei mir klappt es (Office 365)
sowohl das drucken auf Drucker,
und auch drucken auf Pdf creator
Auch aus deiner Originaldatei heraus
Sorry ich bin raus
Anzeige
Ich glaub ich habs
04.07.2018 14:48:48
PeterK
Hallo
In der BeforePrint Sub muss Cancel auf False (oder die Zeile löschen), dann funktioniert alles bei mir
AW: Ich glaub ich habs
04.07.2018 14:58:14
UweD
Dann wird aber 2mal gedruckt
erst ohne Gelb, dann mit Gelb
LG UweD
AW: Ich glaub ich habs
05.07.2018 08:58:19
PeterK
Hallo
Stimmt, hab ich leider übersehen :-(
ganz andere Idee
04.07.2018 14:59:24
Daniel
Hi
wenns mit der Gelbfärbung nicht klappt, dann gäbe es noch folgende Variante:
kennzeichne die Zellen, die ausgefüllt werden müssen mit einem Grafikelement z.B. Rechteck mit rotem Rahmen und ohne Füllung.
dieses Reckteck legst du um die auszufüllenden Zellen.
für die Grafikelement kannst du in Eigenschaften Einstellen, ob diese gedruckt werden sollen oder nicht.
Dh auf dem Bildschirm bleiben sie immer sichtbar, im Ausdruck sind sie nicht vorhanden.
Dann muss da gar kein Code laufen.
ansonsten probiers mal so:
- im BeforePrin-Event nur die Zellfärbung zurücknehmen, ansonsten keine weitere Aktion starten, so dass der Druck normal ausgeführt werden, dh Events bleiben an, Cancel bleibt False und es wird kein Print-Befehl ausgeführt.
- für das wiederherstellen der Färbung schreibst du ein eigenes Makro in einem eigenen Modul
dieses Makro rufst du mit Application.Ontime mit einem Zeitversatz von ein paar Sekunden auf, so dass die Rücksetzung der Farben erst passiert, wenn der Druck abgeschlossen ist.
´
Gruß Daniel
Anzeige
Nochmal mit Mappe
04.07.2018 15:42:50
mmat
Eben ist mir eingefallen, warum die Druckroutine die Events abschaltet. Darum hab ich das wieder eingebaut (aber anders).
Wie schon erwähnt, der PDF-Export ist was ganz anderes. Wird mit dem Knopf "PDF" ausgelöst und hat mit dem Drucken nix zu tun. Auch das hab ich eingebaut (und ausnahmsweise auch getestet).
Die Datei
https://www.herber.de/bbs/user/122479.xlsm
AW: Nochmal mit Mappe
05.07.2018 09:37:03
Linda
Hi mmat,
vielen Dank für deine Hilfe, über die Druckroutine funktioniert es jetzt. Damit komme ich schonmal weiter.
Über das PDFgenerieren Makro leider nicht (Debugger). Es wäre die elegantere Lösung gewesen, da ich gleich den Dateinamen bestimmen kann. Kann das an meiner 2010er Version liegen? Bei dir scheint es ja zu funktionieren.
Anzeige
AW: Nochmal mit Mappe
05.07.2018 09:59:38
Daniel
Hi
das Problem ist dass das Speichern als PDF die BeforePrintRoutine aufruft!
wenn du da aber nochmal druckst und dann das eigentliche Drucken selber cancelst, dann wird auch nicht als PDF gespeichert!
das kannst du aber in dem Makro leicht verhindern, in dem du die Events vor dem Exportieren ausschaltest.

Application.EnableEvents  = false
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=strFile,...
Application.EnableEvents = true
oder denke nochmal darüber nach, die auszufüllenden Zellen per Grafikelement zu kennzeichen.
Bei denen kann man in den Eigenschaften einstellen, dass sie nicht gedruckt werden sollen.
Gruß Daniel
AW: Nochmal mit Mappe
05.07.2018 10:22:51
Linda
Super, das ist es :-)
Ich danke dir Daniel!!!
Noch eine letzte Anmerkung
05.07.2018 14:34:30
Linda
Noch eine letzte Info, falls das Thema noch jemand interessiert:
Ich war gerade so ziemlich am verzweifeln, da das PDF-Drucken plötzlich nicht mehr funktioniert habe. Es lag ganz einfach daran, dass der automatisch generierte PDF-Dateiname zu lang war.
AW: Noch eine letzte Anmerkung
05.07.2018 16:26:10
Hajo_Zi
ich hätte aus dem Beitrag gelesen das es gelöst ist. Es muss also nicht als offen markiert werden. Ansonsten schreibe was offen ist.

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
AW: Nochmal mit Mappe
05.07.2018 10:00:15
PeterK
Hallo Linda
Bie mir (Excel 2013) hat das PDFgenerieren Makro auch nicht funktioniert, das es ebenfalls in die BeforePrint Routine hüpft und dadurch gestört wird. Ich habe folgende Zeile als erstes Kommando in die BeforePrint Routine geschrieben:

If TypeName(Application.Caller) = "String" Then Exit Sub
Wenn die Routine über Drucken ausgeführt wird ist der TypeName "Error" da unreferenziert, ansonsten steht der Name des Buttons im Caller.

166 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige