AW: Habe Ergänzung brauch dringend DEINE Unterstützung
26.06.2008 00:27:08
fcs
Hallo Kurt,
hier ein Beispiel.
Die Prozedur sucht zunächst im Bereich nach dem eingelesenen Wert. Wird dieser nicht gefunden, dann wir der Wert in der Schleife immer um 1 erhöht bis zum vorgegebenen Max-Wert.
Sub aaatest()
Dim varGesucht As Variant, varGefunden As Variant
Dim Zelle As Range
'Gesuchten wert einlesen
varGesucht = Val(Left(ActiveSheet.Range("M2").Value, 2))
varGefunden = varGesucht 'Hilfswert setzen
Do
'Prüfen, ob der Hilfswert die Bedingungen für eine Zelle im Bereich erfüllt
For Each Zelle In Range(Cells(6, 9), Cells(Rows.Count, 9).End(xlUp))
'If Day(Zelle) = varGefunden Then Application.Goto Zelle, True: Exit For
If Day(Zelle) = varGefunden And Month(Zelle) = Month(Date) Then
Zelle.Select
'Testzeilen --------------------- Anfang
If varGefunden = varGesucht Then
MsgBox varGesucht & " wurde gefunden"
Else
MsgBox varGesucht & " wurde nicht gefunden, aber nächst höherer Wert " & varGefunden
End If
'Testzeilen --------------------- Ende
Exit Do
End If
Next Zelle
varGefunden = varGefunden + 1
If varGefunden = 32 Then
MsgBox varGesucht & " nicht gefunden und auch kein anderer Wert bis 31"
Exit Sub
End If
Loop
End Sub
Noch ein paar Tipps:
Alle Dim-Anweisungen sollten zu Beginn einer Prozedur stehen und nicht verstreut im Code.
Du musst auch nicht unbedingt für jede Schleife neue Variablen deklarieren. Nur wenn du die Inhalte von Variablen später in der Prozedur nochmals benötigst dann sind unterschiedliche Variablen erforderlich. Ansonsten ist die wiederholte Verwendung der gleichen Variablen sinnvoll.
Ansonsten könnte man den Code noch um einige
....Select
Selection ....
Konstrukte bereinigen
ActiveSheet.Range("I6").Select
zz = ActiveCell.Address()
wir z.B. zu
zz=ActiveSheet.Range("I6").Address
oder
zz = "$I$6"
Gruß
Franz