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

Daten Prüfung bei der Zelleneingabe (live)

Forumthread: Daten Prüfung bei der Zelleneingabe (live)

Daten Prüfung bei der Zelleneingabe (live)
03.04.2018 23:01:55
Tim
Hallo Zusammen,
Wie kann ich die Eingabe einer Zelle direkt nach der Eingabe überprüfen?
Eingabefelder in Zelle "J"
Prüffelder in Zelle "E"
Die Eingabe in "J" muss durch "E" teilbar sein.
Ist die Eingabe in Zelle "J" nicht durch Zelle "E" soll es eine Warnmeldung geben.
Auch Super wäre, wenn automatisch auf die nächst höhere Zahl aufgerundet wird.
Z.B. der Wert in "E" ist 15
gebe ich in "J" "18" ein, soll "E" auf 20 gesetzt werden.
Ich bin mir nicht ganz sicher, ob ich dass überhaupt über ein Makro lösen kann.
Bin gerade ideenlos habt Ihr eine?
lg
Der Tim
Anzeige

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

Betreff
Datum
Anwender
Anzeige
Lies Dein Beispiel noch mal durch ...
03.04.2018 23:52:39
lupo1
... Seit wann sind 20 und 18 durcheinander teilbar?
AW: Lies Dein Beispiel noch mal durch ...
04.04.2018 01:07:59
Tim
Ups ich meine natürlich "30" nicht "20" Danke für die Korrektur. ;)
AW: Daten Prüfung bei der Zelleneingabe (live)
03.04.2018 23:56:50
Tim
Mein Lösungsansatz ist per Makro eine Datenprüfung auf die Zelle zu legen.
Das habe ich mit dem Makrorekorder aufgenommen und leicht angepasst, leider funktioniert das nicht wie geplant.

With Range("J134").Validation
.Delete
.Add Type:=xlValidateCustom, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=J134=OBERGRENZE(J134;E134)"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = "Fehler"
.InputMessage = "Eingabe nur in " & Range("E134").Value & " er Schritte"
.ErrorMessage = "Eingabe nur in " & Range("E134").Value & " er Schritte"
.ShowInput = True
.ShowError = True
End With
sieht doch eigentlich nicht verkehrt aus :/
Anzeige
AW: Daten Prüfung bei der Zelleneingabe (live)
04.04.2018 01:09:11
Tim
Ups, ich meine natürlich "30" und nicht "20".
Danke für die Korrektur
AW: Daten Prüfung bei der Zelleneingabe (live)
04.04.2018 08:29:49
Oberschlumpf
Hi Tim,
versuch es mal hiermit
https://www.herber.de/bbs/user/120842.xlsm
Die Division wird nur geprüft, wenn in Spalte E ein Wert vorhanden ist.
Also: zuerst Wert in E dann in J eintragen.
Hilfts?
Ciao
Thorsten
Anzeige
AW: Daten Prüfung bei der Zelleneingabe (live)
04.04.2018 10:55:28
Tim
Hallo Thorsten,
Vielen Dank, das hilft wirklich sehr.
Ich habe gestern auch noch bis 2:00 Uhr an einer Worksheet_Change Lösung gebastelt und irgendwann abgebrochen.
Deine Lösung ist echt Klasse.
Es gibt noch ein kleinen Rundungsfehler, wie bekommt man es hin, dass immer aufgerundet wird?
Ist E = 60
dann wird erst ab 31 aufgerundet. alles unter 31 ergibt "0".
Lg
Tim
Anzeige
AW: Daten Prüfung bei der Zelleneingabe (live)
04.04.2018 11:33:00
Oberschlumpf
Hi Tim,
Recht haste!
Ersetz diese Zeile
Range("J" & zeile).Value = Range("E" & zeile).Value * Round(Range("J" & zeile).Value / Range("E" & zeile).Value, 0)

durch diese Zeilen

If Round(Range("J" & zeile).Value / Range("E" & zeile).Value, 0) > 0 Then
Range("J" & zeile).Value = Range("E" & zeile).Value * Round(Range("J" & zeile).Value /  _
Range("E" & zeile).Value, 0)
Else
Range("J" & zeile).Value = Range("E" & zeile).Value
End If

(hier mit _ am Ende einer Zeile entstandenen Zeilenumbrüche werden durch die Forumssoftware eingefügt. Im Code müssen diese Zeilenumbrüche entfernt werden.)
Hilfts?
Ciao
Thorsten
Anzeige
AW: Daten Prüfung bei der Zelleneingabe (live)
04.04.2018 11:55:35
Tim
thx Thorsten,
so geht es auch.
Ich habe mich selbst probiert und habe es so gelöst.
f liMod  0 Then
Application.EnableEvents = False
MsgBox Range("J" & zeile).Value & " ist nicht ohne Rest durch " & Range("E" & zeile) _
.Value & " teilbar." & vbCrLf & _
"Der Wert wird auf den nächst möglichen Wert aufgerundet.", vbExclamation, " _
Hinweis"
iRest = Round(Range("J" & zeile).Value / Range("E" & zeile).Value, 0)
If iRest >= 1 Then iRest = iRest + 1
If iRest = 0 Then iRest = 1
Range("J" & zeile).Value = Range("E" & zeile).Value * iRest
Application.EnableEvents = True
End If
Es wird also immer auf die nächst Größere Einheit aufgerundet ;)
Werde beides mal testen.
lg
Tim
Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige