Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1224to1228
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
Inhaltsverzeichnis

Gültigkeitsprüfung per VBA

Gültigkeitsprüfung per VBA
Marten
Hallo zusammen,
ich habe folgenden VBA-Code für die Umwandlung von Zahlen in Uhrzeit gefunden: Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False Dim Zeit As Double If Not Intersect(Target, Range("A1:B10")) Is Nothing Then If Target.Text "" Then Zeit = Int((Target.Value) / 100) / 24 + (Target.Value / 100 - Int(Target.Value / 100)) / _ 14.4 Target.Value = Format(Zeit, "hh:mm") End If End If Application.EnableEvents = True End Sub
Der funktioniert soweit sehr gut.
Nun möchte ich diesen Code um eine Gültigkeitsprüfung erweitern, und zwar:
Bei der Eingabe in Zelle B1 (BIS-Zeit) soll die Zeit geprüft werden, ob diese größer ist als die in Zelle A1 (VON-Zeit) usw.
Mit der "normalen" Gültigkeitsprüfung (Zeit größer als) funktioniert dies nicht.
Hat jemand einen Vorschlag.
Wäre echt nett.
Danke.

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Gültigkeitsprüfung per VBA
24.08.2011 05:03:10
fcs
Hallo Marten,
bei einer Eingabe via Makro ist die Gültigkeitsprüfung nicht aktiv, da muss man nachhelfen.
als Gültigkeits Prüfung wählst du "benutzerdefiniert"
und als Formel:

=B1>A1
Zusätzlich gibst du auch Text ein für die Fehlermeldung und Meldungstitel-Titel.
Deinen Code passt du wie folgt an. Dann wird bei der Eingabe in Spalte B ggf. eine Fehlermeldung angezeigt und die Eingabe wieder gelöscht.
Gruß
Franz
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Dim Zeit As Double
If Not Intersect(Target, Range("A1:B10")) Is Nothing Then
If Target.Text  "" Then
Zeit = Int((Target.Value) / 100) / 24 + (Target.Value _
/ 100 - Int(Target.Value / 100)) / 14.4
Target.Value = Format(Zeit, "hh:mm")
If Target.Column = 2 Then
If Target.Validation.Value = False Then
MsgBox Target.Validation.ErrorMessage & vbLf & vbLf _
& "Bitte neu eingeben", vbInformation, Target.Validation.ErrorTitle
Target.Select
Target.ClearContents
End If
End If
End If
End If
Application.EnableEvents = True
End Sub

Anzeige
AW: Gültigkeitsprüfung per VBA
25.08.2011 04:22:14
Marten
Hallo, danke für deinen Vorschlag.
Funktioniert sehr gut.
Nun möchte ich noch eine nützliche Prüfung, um Fehleingaben zu verhindern.
In der Spalte A habe ich eine benutzerdef. Prüfung, die nur Eingaben von ganzen Zahlen zwischen 0 und 2400 ermöglichen, diese sollte auch in der Spalte B (im Code?) sein.
Bitte wieder um Hilfe.
Gruß Marten.
AW: Gültigkeitsprüfung per VBA
26.08.2011 01:05:45
fcs
Hallo Marten,
es ist einfacher, wenn die Prüfung der Eingabe auf ganze Zahlen in der Datengültigkeit erfolgt.
Das Makro prüft dann, ob in Spalte B der Wert größer als in Spalte A ist.
Gruß
Franz
Tabelle1

 AB
121:3422:22

Datengültigkeit der Tabelle
ZelleZulassenDatenEingabe 1Eingabe 2
A1Ganze ZahlZellwert ist zwischen 02359
B1Ganze ZahlZellwert ist zwischen 02359


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Dim Zeit As Double
If Not Intersect(Target, Range("A1:B10")) Is Nothing And Target.Cells.Count = 1 Then
If Not IsEmpty(Target) Then
If Target.Value 

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige