AW: Wenn Zelle leer - Datum prüfen und vergleichen
24.09.2015 12:02:14
matthias
Hallo Reiner,
na dann machen wir es einfach anders. Statt mit einer For-Schleife nutzen wir die Suchfunktion. Der Button "Weitersuchen" ist dir sicher bekannt, der lässt sich in VBA mit dem "After"-Parameter nachahmen. Wir suchen dabei nach der aktiven Zelle.
'Daten suchen und an TextBox übergeben
Private Sub CommandButton1_Click()
Dim rZelle As Range
Set rZelle = Columns("F").Find(What:="", After:=Cells(ActiveCell.Row, 6)) 'Suche leere Zelle in _
Spalte F
If rZelle Is Nothing Then
MsgBox "Nichts gefunden, alles i.O.", , "Hinweis"
Else
If rZelle.Offset(0, -5) = "" Then 'Ende der Tabelle erreicht (Spalte A leer)
Cells(1, 5).Select
Call UserForm_Initialize
MsgBox "Nichts gefunden, oder Ende der Tabelle erreicht.", , "Hinweis"
Set rZelle = Columns("F").FindNext(After:=Cells(ActiveCell.Row, 6))
End If
If IsDate(rZelle.Offset(0, -1).Value) Then ' Spalte E ist Datum?
rZelle.Offset(0, -1).Select
With ActiveCell
If .Value + 30 >= Date Then 'hier ist die Differenz auf 30 tage erhöht ! _
TextBox1 = .Offset(0, -3) 'name
TextBox2 = .Offset(0, -4) 'datum
TextBox3 = Format(.Offset(0, -2), "0.00 ") 'betragA
TextBox4 = .Offset(0, -1) 'brief1
TextBox5 = .Value 'brief2
TextBox6 = .Offset(0, 1) 'zahlung erfolgt
End If
End With
End If
End If
End Sub
'geänderte Daten übernehmen
Private Sub CommandButton2_Click()
With ActiveCell
If .Value + 30 >= Date Then 'hier ist die Differenz auf 30 tage erhöht ! _
.Offset(0, -3) = TextBox1 'name
.Offset(0, -4) = CDate(TextBox2) 'datum
.Offset(0, -2) = CCur(TextBox3) 'betragA
.Offset(0, -1) = CDate(TextBox4) 'brief1
.Value = CDate(TextBox5) 'brief2
.Offset(0, 1) = TextBox6 'zahlung erfolgt
End If
End With
End Sub
'Einstellungen beim Öffnen der Userform
Private Sub UserForm_Initialize()
TextBox1 = ""
TextBox2 = ""
TextBox3 = ""
TextBox4 = ""
TextBox5 = ""
TextBox6 = ""
End Sub
Vorsicht beim Suchen: Die Zelle, welche im After-Parameter angegeben wird, muss im Suchbereich liegen. Die Lösung dazu siehst du ja.
Was mich ehrlich gesagt stört ist das "ActiveCell". Ich arbeite ungern damit zws. Zellen hin- und herzuspringen und sie zu markieren, denn das ist ein unnötiger Schritt. Da du aber darauf bestehst, bin ich dabei geblieben.
lg Matthias