Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Change(ByVal Target as range

Betrifft: Change(ByVal Target as range von: txfrede
Geschrieben am: 26.02.2008 21:35:47

Hallo brauche dringend Hilfe

ich möchte wenn in Zelle A1 ein Wert eingegeben wird, überprüfen ob der Eingabewert im Bereich des Max Wertes der Zelle A2 und im Min Wertes Zelle A3 ist.
Wenn der eingebende Wert ausserhalb von MIN/Max ist, soll eine Meldung kommen "ist die Eingabe korrekt?" die mit OK (der Wert wird trotz Abweichung übernommen) oder Abrechen der Wert wird gelöscht und muss neu eingegeben werden.
Das ganze soll für ca 130 Zeilen ausgelegt werden.
B1 = Eingabe B2 Min-Wert B3 Max-Wert
u.s.w.

  

Betrifft: Gültigkeit von: Beate Schmitz
Geschrieben am: 26.02.2008 21:48:04

Hallo,

dafür brauchst du kein Makro, dass kannst du über Menü > Daten > Gültigkeit.... einstellen:

 ABC
112105

Datengültigkeit der Tabelle
ZelleZulassenDatenEingabe 1Eingabe 2
A1Benutzerdefiniert =UND(A1>=C1;A1<=B1) 


Im Registerblatt Fehlermeldung setzt du oben einen Haken, wählst im Dropdown "Warnung" aus und schreibst deinen gewünschten Warntext in das Textfeld.

Guckst Du: Gültigkeit (1) - Grundlagen

Gruß,
Beate


  

Betrifft: AW: Change(ByVal Target as range von: Henrik B.
Geschrieben am: 26.02.2008 21:48:48

Wenn du kleine Abweichungen in der Benutzerführung tolerierst würde ich es ganz einfach so machen:
Zelle A1 mit Gültigkeitsprüfung belegen, dazu
- Menüleiste - Daten - Gültigkeit...
- Register Einstellungen: Zulassen Dezimal, Daten zwischen, Minimum A2, Maximum A3
- Register Fehlermeldung: Häkschen setzen, Typ Warnung - und dann deinen Text eingeben.
Hilft dir das weiter? Gruß H.


  

Betrifft: AW: Change(ByVal Target as range von: Gerd L
Geschrieben am: 26.02.2008 22:59:13

Hallo txfrede

oder entsprechend deiner Überschrift - ins Tabellenblattmodul.

Private Sub Worksheet_Change(ByVal Target As Range)

If Not IsEmpty(Target.Value) And IsNumeric(Target.Value) Then
If Not Intersect(Range(Target.Address), Range(Cells(1, 1), Cells(130, 1))) Is Nothing Then
If Target.Count = 1 Then
If Target.Offset(0, 1).Value < Target.Value Or Target.Offset(0, 2) > Target.Value Then
If MsgBox("Ist die Eingabe korrekt?", vbOKCancel + vbQuestion, "Kontrolle") = vbCancel Then
   Target.Value = Empty
End If
End If
End If
End If
End If
End Sub



Gru? Gerd