PDA

Vollständige Version anzeigen : Eingabe löschen wenn Wert größer als


Der_Thomas
13.07.2015, 10:18
Hallo zusammen,

ich möchte erreichen dass der eingegebene Wert in Spalte B wieder gelöscht wird wenn dieser Wert größer ist als der Wert der in Spalte L steht.
Dazu habe ich mir diesen Code erstellt:

<div><link href="http://www.ms-office-forum.net/forum/externals/codeconv.css" rel="stylesheet"><pre><span class="TOKEN">Private Sub</span> Zellenleeren()
<span class="TOKEN">Dim</span> i <span class="TOKEN">As</span> <span class="TOKEN">Integer</span>
<span class="TOKEN">For</span> i = 1 <span class="TOKEN">To</span> 300
<span class="TOKEN">If</span> Cells(i, 2) &gt; Cells(i, 12) <span class="TOKEN">Then</span>
MsgBox &quot;Der Rest kann nicht gr&ouml;&szlig;er als die BedMng. sein&quot; &amp; Chr(10) &amp; &quot;Die Eingabe wird gel&ouml;scht&quot;
Cells(i, 2).Clear
<span class="TOKEN">End</span> <span class="TOKEN">If</span>
<span class="TOKEN">Next</span> i
<span class="TOKEN">End</span> <span class="TOKEN">Sub</span></pre></div>
Code eingefügt mit dem MOF Code Converter (http://www.ms-office-forum.net/forum/codeconverter.php)

Funktioniert aber nicht.
Kann mir jemand den Code berichtigen und mir mit einfachen Worten erklären was ich falsch gemacht habe?

Das wäre großartig.

Jetzt schon mal Danke.

jack_D
13.07.2015, 10:29
Hallo Thomas,

also der Code sieht sauber aus.

Vielleicht kommt der mit dem Formaten in den Zellen nicht klar. Schau dir doch mal deine Werte in den Spalten 2 und 12 an.

Achte dabei drauf, dass diese möglichst die gleiche Formatierung haben.

Grüße

ASE
13.07.2015, 10:33
Hallo,
oder so

Private Sub Worksheet_change(ByVal Target As Range)
With Target
If .Column = 2 AND Cells(.Row, 2) > Cells(.Row, 12) Then
If .Value = "" Then Exit Sub
MsgBox "Der Rest kann nicht größer als die BedMng. sein" & Chr(10) & "Die Eingabe wird gelöscht"
.ClearContents
End if
End With
End Sub

Dieser Code muss in die entsprechende Tabelle kopiert werden!
Reagiert schon bei der Eingabe.

aloys78
13.07.2015, 10:48
Hallo Thomas,

mein Vorschlag für den VBE beim betreffenden Tabellenblatt:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("B1:B300")) Is Nothing Then Exit Sub
If Target.Value > Cells(Target.Row, 12) Then
Application.EnableEvents = False
Target.ClearContents
Application.EnableEvents = True
MsgBox "Der Rest kann nicht größer als die BedMng. sein" & Chr(10) & "Die Eingabe wird gelöscht"
End If
End Sub


Gruß
Aloys

Der_Thomas
13.07.2015, 10:51
Hallo,

danke für die Antworten.

Die Lösung von ASE funktioniert so wie ich mir das gewünscht habe.

Im Nachhinein habe ich gemerkt dass mein Code funktioniert wenn man ihn von Hand anstößt.

*Nachtrag*
Der Code von Aloys funktioniert auch einwandfrei.