Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

MessageBox an Wenn-Bedingung knüpfen

Forumthread: MessageBox an Wenn-Bedingung knüpfen

MessageBox an Wenn-Bedingung knüpfen
25.01.2018 16:31:02
Gesa
Hallo zusammen,
bin ganz neu hier und versuche mich derzeit mit den Kinderfüßen der VBA-Welt.
Ich habe eine Datei, in der in Spalte "R" per Wenn-Formel das Wort "POP" steht, oder eben nicht. Ich würde gerne, sobald in einer Zeile von R irgendwo das Wort "POP" auftaucht, eine MessageBox öffnen lassen, in der der Hinweistext steht "Achtung!".
Kann mir da jemand helfen?
Ich habe mir einen Teil schon zusammen gebastelt, allerdings läuft das nur auf einer Zelle, die ich benenne. Sobald es eine andere ist, klappt der Code nicht mehr. Was muss ich anpassen?
Sub MessageBox()
Sheets("Umwandlung").Activate
If Cells(6, 18) = "POP" Then
MsgBox ("Achtung!")
End If
End Sub

Vielen Dank für die Hilfe
MfG
Gesa
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: MessageBox an Wenn-Bedingung knüpfen
25.01.2018 17:26:11
Daniel
Hi
wenn du eine mehrere Zellen überwachen willst, könntest du ZÄHLENWENN verwenden.
ich würde hier auch keine Messagebox verwenden, sondern z.B. in die Zelle S1 diese Formel schreiben:
=Wenn(ZählenWenn(R:R;"POP")>0;"Achtung";"")

das hätte den Vorteil, dass die Meldung einerseits nicht weiter stört, andereseits aber auch erst dann verschwindet, wenn auch das letzte "POP" weg ist.
das ZählenWenn könntest du auch in dein Makro einbauen:
If Worksheetfunction.CountIf(columns(18), "POP") > 0 Then
Msgbox "Achtung", vbCritical
End If
Gruß Daniel
Anzeige
AW: MessageBox an Wenn-Bedingung knüpfen
25.01.2018 17:31:06
onur

Private Sub Worksheet_Change(ByVal Target As Range)
Dim z, s, a
z = Target.Row
s = Target.Column
If s  18 Then Exit Sub
a = Target.Text
If Target.Text = "POP" Then MsgBox "Achtung"
End Sub

AW: MessageBox an Wenn-Bedingung knüpfen
25.01.2018 18:55:57
Daniel
HI Onur
1. Das POP wird nicht von Hand eingegeben, sondern per Formel erzeugt.
Somit ist CHANGE das falsche Event.
Wenn du hier mit CHANGE arbeiten willst, müsstest du diejenigen Zellen überwachen, auf welche sich die Formeln in Spalte R beziehen und nicht die Zellen mit der Formel selbst.
Wenn du die Spalte mit der Formel überwachen willst, musst du das CALCULATE-Event nehmen, welches auslöst wenn eine Formel auf dem Blatt neu berechnet wurde (wobei du nicht feststellen kannst welche und ob sich hierbei die Formelergebnisse geändert haben)
2. Sollte man beachten, dass TARGET im Change- und Selection-Change-Event auch mehr als eine Zelle enthalten kann und der Ausdruck "Target.Text" oder "Target.Value" ein Array ergibt und keinen Einzelwert was dann bei Target.Text = "POP" zu einem Fehler führt.
Lediglich beim Before_DoubleClick-Event ist TARGET immer eine Einzelzelle.
Gruß Daniel
Anzeige
AW: MessageBox an Wenn-Bedingung knüpfen
25.01.2018 19:46:49
onur
OOPS, habe vergessen, dass er "Veränderung durch Formel" schrieb.
AW: Rückfrage
25.01.2018 20:44:04
Gerd
Hi
...und der Ausdruck "Target.Text" oder "Target.Value" ein Array ergibt und keinen Einzelwert
Kannst du Ersteres belegen?
Private Sub Worksheet_Change(ByVal Target As Range)
Debug.Print IsArray(Target.Text)
End Sub

cu Gerd
Anzeige
AW: Rückfrage
26.01.2018 11:22:26
Daniel
ok ist falsch.
gibt kein Array, sondern NULL
das ist für diese Prüfung genauso wenig brauchbar wie das Array und hat die gleichen Konsequenzen.
Auch mit dem Array von Target.Value kannst du nicht sinnvoll arbeiten, da die Zellen von Target ja nicht unbedingt lückenlos zusammen hängen müssen und das Array das nicht abbilden kann.
Gruß Daniel
Anzeige
AW: Rückfrage
25.01.2018 21:00:57
Gerd
Hi
...und der Ausdruck "Target.Text" oder "Target.Value" ein Array ergibt und keinen Einzelwert
Kannst du Ersteres belegen?
Private Sub Worksheet_Change(ByVal Target As Range)
Debug.Print IsArray(Target.Text)
End Sub

cu Gerd
AW: MessageBox an Wenn-Bedingung knüpfen
25.01.2018 22:00:57
onur
So geht es (über einen kleinen Umweg) doch:
https://www.herber.de/bbs/user/119273.xlsm
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

MessageBox an Wenn-Bedingung knüpfen


Schritt-für-Schritt-Anleitung

Um eine Excel MessageBox an eine Wenn-Bedingung zu knüpfen, kannst du folgenden VBA-Code verwenden. Dieser öffnet eine MessageBox, wenn in der Spalte "R" das Wort "POP" erscheint.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject (deineDatei.xlsx)" -> Einfügen -> Modul.

  3. Kopiere und füge den folgenden Code in das Modul ein:

    Sub MessageBox()
       Sheets("Umwandlung").Activate
       If WorksheetFunction.CountIf(R:R, "POP") > 0 Then
           MsgBox "Achtung!", vbCritical
       End If
    End Sub
  4. Schließe den VBA-Editor und kehre zu Excel zurück.

  5. Führe das Makro aus, um die MessageBox anzuzeigen, wenn "POP" in der Spalte "R" vorhanden ist.


Häufige Fehler und Lösungen

  • Fehler: Die MessageBox wird nicht angezeigt, wenn "POP" in einer anderen Zelle steht.

    • Lösung: Stelle sicher, dass du die gesamte Spalte "R" in der CountIf-Funktion überprüfst, wie im obigen Code gezeigt.
  • Fehler: Die MessageBox erscheint mehrmals.

    • Lösung: Vergewissere dich, dass du den Code in einem geeigneten Ereignis ausführst, z.B. im Worksheet_Change-Event, wenn sich die Daten ändern.

Alternative Methoden

Eine alternative Methode zur Verwendung der MessageBox ist die Implementierung einer Formel in einer anderen Zelle, wie von Daniel vorgeschlagen:

=Wenn(ZählenWenn(R:R;"POP")>0;"Achtung";"")

Diese Formel zeigt "Achtung" an, wenn das Wort "POP" in der Spalte "R" erscheint, ohne eine störende MessageBox zu verwenden.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie du die MessageBox in verschiedenen Szenarien verwenden kannst:

  1. Einfaches Beispiel: Verwende den oben beschriebenen Code, um eine MessageBox zu erstellen, die "Achtung!" anzeigt, wenn "POP" vorhanden ist.

  2. Erweiterung: Du kannst den Text in der MessageBox anpassen, um spezifischere Warnungen zu geben, z.B.:

    MsgBox "Achtung! POP wurde gefunden in Zeile: " & Target.Row, vbExclamation

Tipps für Profis

  • Nutze vbCritical oder vbExclamation, um den Typ der MessageBox anzupassen und die Warnung hervorzuheben.
  • Überlege, den Code in ein Ereignis wie Worksheet_Change oder Workbook_SheetCalculate zu setzen, um auf Änderungen in Echtzeit zu reagieren.
  • Teste den Code gründlich, um sicherzustellen, dass die MessageBox nur unter den gewünschten Bedingungen erscheint.

FAQ: Häufige Fragen

1. Wie kann ich die MessageBox anpassen? Du kannst den Text der MessageBox ändern, indem du den Text in der MsgBox-Funktion anpasst.

2. Funktioniert dieser Code in jeder Excel-Version? Ja, der Code ist mit den meisten modernen Excel-Versionen kompatibel, die VBA unterstützen.

3. Kann ich mehrere Bedingungen hinzufügen? Ja, du kannst zusätzliche Bedingungen mit If ... ElseIf ...-Anweisungen hinzufügen, um die Logik zu erweitern.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige