Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Fehlermeldung-End Sub erwartet





Frage

Hallo, ich habe von einem netten User eine Lösung für ein Druckmakro mit Bedingung bekommen. Leider erhalte ich immer die Fehlermeldung: End Sub erwartet. Wer kann mir hierbei eiterhelfen? Das Makro schaut folgendermaßen aus: Sub Makro1 () Private Sub Workbook_BeforePrint(Cancel As Boolean) Dim beenden As String If UCase(Cells(1, 1)) = "OK" And UCase(Cells(2, 1)) = "OK" Then ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Else beenden = MsgBox("ok fehlt in A1 oder A2" & Chr$(13) & _ Chr$(13), vbYes) Cancel = True End If End Sub

Antwort 1 von JoeKe

Hallo,

lösch das :
Sub Makro1 ()


Befindet sich der Code auch in dem VBA-Projekt "DieseArbeitsmappe" ?

Gruß

JöKe

Antwort 2 von thunderd

Hallo JöKe,

vielen Dank für die schnelle Hilfe. Nein das steht im Modul. Ich habe es jetzt in diese Arbeitsmappe kopiert, aber da kann ich das Makro nicht zuweisen.

thunderd

Antwort 3 von DukeNT

Hallo thunderd,
das Makro brauchst du auch nicht zuweisen.
Sobald du die Mappe drucken willst ruft er das auf.

Gruß Niels

Antwort 4 von thunderd

Das ist allerdings nicht alles, da kommt noch ein riesen Rattenschwanz nach, in dem die Datei in einem best. Ordner gespeichert wird und die einzelnen Zellen in eine Tabelle kopiert werden usw. Wie müsste es aussehen, wenn ich es im Modul voranstellen will, das Druckmakro mit der Bedingung?

thunderd

Antwort 5 von DukeNT

Dann nimm:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
raus und schreib dafür wieder:
Sub Makro1()
Dann kannst du das Makro wieder aufrufen.

Antwort 6 von thunderd

Super DukeNT,

es hat geklappt, allerdings noch nicht ganz so, wie ich es mir vorstelle. Vielleicht kannst Du mir ja nochmal helfen.
Und zwar mache ich als Bedingung das ich in den Zellen A1 und A2 ein "ok" haben will. Ist das nicht der Fall, erhalte ich die Fehlermeldung. Allerdings wenn ich in der Fehlermeldung auf ok klicke, nimmt das Makro seinen Lauf und kopiert mir die Daten in die Tabelle. Ich möchte aber, dass es nicht druckt und den weiteren Verlauf abbricht, damit ich die Daten so ändern kann, dass dann in beiden Zelle A1+A2 "ok" steht und dann drucke und anschließend die richtigen Daten in die Tabelle kopiere.

Wäre toll wenn Du mir eine Lösung anbieten könntest.

thunderd

Antwort 7 von JoeKe

Hallo thunderd,

stell den Code so um:

Option Explicit

Sub druck()
Dim beenden As String
If UCase(Cells(1, 1)) <> "OK" Or UCase(Cells(2, 1)) <> "OK" Then
beenden = MsgBox("ok fehlt in A1 oder A2" & Chr$(13) & _
Chr$(13))
Exit Sub
Else
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Rem Hier können weitere Anweisungen folgen
End If
End Sub


Gruß

JöKe

Antwort 8 von thunderd

JöKe,

vielen vielen Dank. Genau so wollte ich es haben.


Schöne Grüße

thunderd

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: