571 Aufrufe
Gefragt in Tabellenkalkulation von
Hallo Excel Experten,

ich habe eine simple Frage bezüglich Msg-Boxes.
Hier das Problem:
Ich sage via Button, führe Makro erst dann aus wenn die Zelle „B8“ und „B9“ befüllt sind.
Das bekomme ich es auch hin.
Hier das Makro:

Private Sub CommandButton1_Click()
If Range("B9") = "" Or Range("B10") = "" Then
MsgBox ("Bitte vorher Daten eintragen")
End If

Else
Makro1 ‘Hier wird das hinterlegt Makro ausgeführt.
End If
End Sub


Was ich nicht hinbekomme ist das folgende:
Erster Check bleibt so wie es ist, wenn B9 oder B10 nicht befüllt sind, soll die Message aufpoppen wie bereits beschrieben.

Zweiter Check (muss noch eingebaut werden) :
Falls Check 1 erfolgreich (also B9 und B10 sind befüllt), dann soll geprüft werden, dass in einem anderen Tabellenblatt mit dem Namen „Tab2“ die Zellen „B20 bis B25“ und „B40 bis B43nicht mit einer zwei (also die Ziffer „2“) befüllt sind.
In diesem Fall sollte die Message aufpoppen „Kontrolliere Tab2“

Wer kann mir hier helfen? Wenn es undeutlich war, bitte einfach fragen.
Schon jetzt vielen Dank für Eure Hilfe.

Gruß
Max

5 Antworten

0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Max,

ich hoffe, ich habe dich richtig verstanden:

Private Sub CommandButton1_Click()

If Range("B9") = "" Or Range("B10") = "" Then
MsgBox "Bitte vorher Daten eintragen", 16, "Fehler!"
Else
With Worksheets("Tab2")
'Mit Zählenwenn überprüfen, ob eine 2 in den Bereichen steht
If Application.WorksheetFunction.CountIf(.Range("B20:B25"), 2) + Application.WorksheetFunction.CountIf(.Range("B40:B43"), 2) > 0 Then
MsgBox "Bitte Tab2 kontrollieren!", 16, "Fehler!"
Else
MsgBox "Jetzt ist alles OK!" 'hier dann dein Code
End If
End With
End If

End Sub


Das OK kommt nur, wenn die Zellen B9 und B10 befüllt sind und im Tabellenblatt Tab2 in den Zellen B20 bis B25 und B40 bis B43 nicht die Zahl 2 steht.

Gruß

M.O.
0 Punkte
Beantwortet von
Hallo M.O.
Du bist wieder derjenige der mir bei meinem Problem hilft 
Also, das Makro läuft, aber nicht ganz so.

Erkläre es kurz:
Wenn sowohl Voraussetzungen 1 und 2 erfüllt sind, dann läuft das Makro so wie es sein sollte.
Wenn aber Voraussetzung 1 OK ist, Voraussetzung 2 nicht (also ist in einer der B-Zellen eine zwei eingetragen), dann bekomme ich die MsgBox richtig angezeigt, wenn ich dann aber auf OK klicke, wird das Makro gestartet. Genau das soll es nicht.
Zur Info: es handelt sich um ein Makro, welche eine E-Mail Funktion im Outlook startet.

Wenn etwas unverständlich ist, sag mir bitte Bescheid.

Gruß,
Max
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Max,

dann probiere mal die folgende Version aus:

Private Sub CommandButton1_Click()

If Range("B9") = "" Or Range("B10") = "" Then
MsgBox "Bitte vorher Daten eintragen", 16, "Fehler!"
Exit Sub
Else
With Worksheets("Tab2")
If Application.WorksheetFunction.CountIf(.Range("B20:B25"), 2) + Application.WorksheetFunction.CountIf(.Range("B40:B43"), 2) > 0 Then
MsgBox "Bitte Tab2 kontrollieren!", 16, "Fehler!"
Exit Sub
End If
End With
End If

MsgBox "Jetzt ist alles OK!" 'hier dann dein Code

End Sub


Gruß

M.O.
0 Punkte
Beantwortet von
]Hi M.O.

es funktioniert sagenhaft.

Vielen Dank für Deine schnelle Hilfe (wie immer).

Eine Frage hätte ich noch. Ist nur "ein nice to have" !

Weißt Du ob man in Msg-Boxen Wörter Fett bzw. unterstrichen angezeigt werden können.
Hier als als Bsp:
Bitte Tab2 kontrollieren

Wenn es nicht gehen sollte, auch ok.

Gruß
Max
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Max,

soviel ich weiß, kannst du den Text einer Messagebox nicht formatieren. Das müsstest du über eine eigene Userform machen.

Gruß

M.O.
...