Anzeige
Archiv - Navigation
756to760
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
756to760
756to760
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zwei "If-Abfragen" hintereinander

Zwei "If-Abfragen" hintereinander
21.04.2006 06:34:56
Ralf-Eckhard
Hallo. Ich möchte zwei "If-Abfragen" hintereinander laufen lassen. Die Erste funktioniert einwandfrei. Wenn ich die Zweite Abfragen durchführen lassen will, bekomme ich die Fehlermeldung "Kompilierungsfehler in verborgenem Modul: Diese Arbeitsmappe"
Der bisherige (funktionierende) Code der ersten Abfrage sieht so aus:
----------

Private Sub Workbook_Open()
'{107} = Plus-Taste im Ziffernblock
'{109} = Minus-Taste im Ziffernblock
Application.OnKey "{107}", "Plus"
Application.OnKey "{109}", "Minus"
Application.OnKey "{F1}", "goto_WG1"
Application.OnKey "{F2}", "goto_WG2"
Application.OnKey "{F3}", "goto_WG3"
Application.OnKey "{F4}", "goto_WG4"
Application.OnKey "{F5}", "goto_WG5"
Application.OnKey "{F7}", "F7_blank"
Application.OnKey "{F8}", "goto_Übersicht"
Application.OnKey "{F9}", "goto_Übersicht_s"
Sheets("Artikel nicht über Kasse").Select
ActiveSheet.Unprotect
Range("A1:D1").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Range("I29").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Sheets("Gästeübersicht").Select
Range("M30").Select
If Worksheets("Artikel nicht über Kasse").Cells(28, 1).Value = "" Then Exit Sub
Sheets("Artikel nicht über Kasse").Select
Select Case MsgBox("Im Blatt  'Artikel nicht über Kasse'  befinden sich noch Einträge." & Chr(10) & "              Sollen diese Einträge jetzt gelöscht werden?", vbYesNo)
Case vbYes
Call Tagesabschluss_start
End Select
Sheets("Gästeübersicht").Select
Range("M30").Select
End Sub

----------
Nun dachte ich mir dass ich hinter "End Select" einfach folgenden Code einfügen kann:
----------
Sheets("Preise").Select
ActiveSheet.Unprotect
Range("AD4").Select
If Worksheets("Preise").Cells(1, 32).Value = "" Then Exit Sub
Sheets("Preise").Select
Select Case MsgBox("Es ist noch eine Rabattaktion aktiv." & Chr(10) & " Soll diese jetzt gelöscht werden?", vbYesNo)
Case vbYes
Call clear_rabatt
End Select
----------
Leider funktioniert das wegen dann erscheinender obiger Fehlermeldung nicht. Was ist falsch?
Wichtig ist dabei noch, dass die zweite Abfrage natürlich unabhängig davon durchgeführt werden soll, ob die erste Abfrage mit "Ja" oder "Nein" beantwortet wird. Kann mir jemand helfen?
Danke im voraus,
Ralf-Eckhard

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Problem selbst gelöst :-)
21.04.2006 09:07:51
Ralf-Eckhard
Habe das Problem doch noch selbst lösen können.
dann also nicht mehr offen...
21.04.2006 11:22:16
Andi
btw: wenn jemand im Archiv auf Deine Frage stößt, dann würde er sich möglicherweise freuen, zu erfahren, WIE Du das Problem gelöst hast.
Schönen Gruß,
Andi
zu früh gefreut ... :-)
21.04.2006 19:16:54
Ralf-Eckhard
Hallo Andi und alle anderen!
War etwas voreilig. Das Problem mit dem Kompilierungsfehler erklärt sich von selbst: Fehler in einem geschützten Modul.
Leider bin ich doch nicht wirklich weiter gekommen. Ich habe nun die beiden If-Abfragen hintereinander - es kommt auch keine Fehlermeldung mehr. Nur wird die zweite Abfrage gar nicht erst durchgeführt wenn die erste Abfrage ("Artikel nicht über Kasse") feststellt, daß in der zu überprüfenden Zelle (28, 1) kein Wert vorhanden ist. Erst wenn dort ein Wert steht und dadurch das Makro "Tagesabschluss_start" ausgeführt wurde, wird die zweite Abfrage ("Preise") durchgeführt. Mache ich grundsätzlich was falsch und muss man dieses Problem irgendwie ganz anders angehen?
Ich möchte halt, daß nacheinander überprüft wird ob jeweils in den beiden Blättern in bestimmten Zellen Werte vorhanden sind und man dann per "Ja/Nein"-Button entscheiden kann ob die entsprechenden Makros ("Tagesabschluss_start" und "clear_Rabatt") ausgeführt werden sollen oder nicht.
Hier der jetzt verwendete Code
----------
If Worksheets("Artikel nicht über Kasse").Cells(28, 1).Value = "" Then Exit Sub
Sheets("Artikel nicht über Kasse").Select
Select Case MsgBox("Im Blatt 'Artikel nicht über Kasse' befinden sich noch Einträge." & Chr(10) & "Sollen
___diese Einträge jetzt gelöscht werden?", vbYesNo)
Case vbYes
Call Tagesabschluss_start
End Select
If Worksheets("Preise").Cells(29, 1).Value = "" Then Exit Sub
Sheets("Preise").Select
Select Case MsgBox("Es ist noch eine Rabattaktion aktiv." & Chr(10) & " Soll diese
___jetzt gelöscht werden?", vbYesNo)
Case vbYes
Call clear_rabatt
End Select
Sheets("Start").Select
Range("E13").Select
End Sub
----------
Für Eure Hilfe bin ich sehr dankbar!
lg,
Ralf-Eckhard
Anzeige
AW: zu früh gefreut ... :-)
21.04.2006 22:57:10
Mustafa
Hallo Andi,
If Worksheets("Artikel nicht über Kasse").Cells(28, 1).Value = "" Then Exit Sub
Diese Zeile prüft ob im Tabellenblatt "Artikel nicht über Kasse" in der Zelle A28 ein Wert ist. Falls dort kein Wert steht, dann führst du ein Exit sub aus was das Makro beendet.
Versuch es mal mit :
If Worksheets("Artikel nicht über Kasse").Cells(28, 1).Value "" Then
ab hier dein Code.
Ausserdem muss dann die zweite If Abfrage nach dem End If der ersten If Anweisung stehen, sonst würde diese bei nicht Erfüllung der ersten If Anweisung wieder nicht ausgeführt werden.
Rückmeldung obs hilft wäre nett
Viele Grüße aus Köln
Anzeige

261 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige