Guten Tag,
Zur Zeit schreibe ich Hobbymäßig für einen Bekannten ein Programm.
Die Aufgabe eines meiner Makros ist es 2 Werte, welche sich in der selben Reihe befinden miteinander zu vergleichen und bei dem Fall, das der Erste Wert kleiner ist als der Zweite, die Reihe ausschneiden und in eine andere Tabelle einfügen.
An sich erfüllt mein Programm auch diese Bedingung, jedoch schneidet es alle Formatierungen und Formeln mit aus. Ich habe schon versucht das ganze mit .Value zu lösen bin aber auf keine Lösung gekommen. Hier ist mein bisheriger Lösungsansatz
Sub AlteAZUBI()
'Soll Schaltfläche "Aktualisieren" in "Datenbank" zugeordnet werden
'Zieht alte Azubis (über 4.Lehrjahr) aus der Datenbank_ und fügt sie Datenbank_Alt
'i,s und als ganzzahlige Zahlen (Integer) definiert
Dim i As Integer
Dim s As Integer
'Groestezeile, Groestezeile2 und Groestezeile3 als sehr große ganzzahlige Zahlen definiert
Dim Groestezeile As Long
Dim Groestezeile2 As Long
Dim Groestezeile3 As Long
'Ermittelt die letzte Zeile in Datenbank
With Worksheets("Datenbank")
Groestezeile = IIf(Len(.Cells(.Rows.Count, 1)), .Rows.Count, .Cells(.Rows.Count, 1).End( _
xlUp).Row)
Debug.Print Groestezeile
Groestezeile = .Columns(1).Find("*", .Cells(1, 1), xlValues, xlWhole, , xlPrevious).Row
Debug.Print Groestezeile
End With
'Ermittelt die letzte Zeile in Datenbank_Alt
With Worksheets("Datenbank_Alt")
Groestezeile2 = IIf(Len(.Cells(.Rows.Count, 1)), .Rows.Count, .Cells(.Rows.Count, 1). _
End(xlUp).Row)
Debug.Print Groestezeile2
Groestezeile2 = .Columns(1).Find("*", .Cells(1, 1), xlValues, xlWhole, , xlPrevious). _
Row
Debug.Print Groestezeile2
End With
'Überprüft das Datum Ausbilungsende jedes Azubis mit dem heutigen
'und kopiert das überschrittene Datum in Datenbank_Alt
'Zählt von 8 bis Groestezeile
For i = 8 To Groestezeile
'Bedingung prüft ob Wert1 kleiner als Wert2
If Worksheets("Datenbank").Cells(i, 10) < Worksheets("Menü").Cells(49, 5) Then
Worksheets("Datenbank").Rows(i).Cut Destination:=Worksheets("Datenbank_Alt"). _
Rows(Groestezeile2 + 1)
End If
Next i
End Sub
Desweiteren habe ich das Problem, wenn eine Reihe erfolgreich aus Datenbank ausgeschnitten und in Datenbank_alt eingefügt wird, das eine leere Reihe bestehen bleibt. Jedoch wäre es gut wenn alle Werte die sich unter der leeren Reihe befinden würden, eine Reihe nach oben "rutschen" würden. Für dieses Problem habe ich bislang auch noch keine Lösung gefunden.
Ich hoffe man versteht meine Problematik, ich bin erst seit kurzem dabei Vba Programme zu erstellen und kenne dementsprechend nicht das nötige Fachvokabular.
Mit freundlichen Grüßen Jannik
|