Herbers Excel-Forum - das Archiv

Change(ByVal Target as range

Bild

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.

Bild

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

Bild

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.

Bild

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

 Bild