Werte in TATSÄCHLICH erste freie Zeile trotz Filte
Dietmar
folgender Code funktioniert ganz gut, hat aber noch Verbesserungspotential.
Die Prozedur ist Teil eines übergeordneten Codes; der Aufruf erfolgt mit Application.Run ...
1.) Wenn Filter gesetzt ist werden keine Daten in die erste freie Zeile eingetragen, weil der ShowAllData-Befehl
nur dann funktioniert, wenn der unten aufgeführt Code bei aktiviertem Sheet "Statistik" ausgeführt
wird. Der Befehl soll aber als Teil eines übergeordneten Codes durch einen Button angestoßen werden, der
sich in einem anderen Sheet befindet.
2) Die Daten aus A30:AO30 sollen in die ERSTE freie Zeile eingetragen werden. Wenn jedoch zwischendurch
leere Zeilen sind, werden diese leider ignoriert.
3) Das Sahnhäubchen wäre es, wenn ich mich um die ShowAllDate-Situation gar nicht kümmern müsste,
sondern der Code unabhängig von der Filtersituation die tatsächlich erste freie Zeile fände.
Hat jemand eine Idee?
Habe weiter unten mal einen Code von Sepp versucht umzuschreiben ... hat nicht geklappt :-(
Viele Grüße
Dietmar aus Aachen
Sub TagesergebnisInStatistik()
Application.EnableEvents = False
If Sheets("Statistik").FilterMode Then Sheets("Statistik").ShowAllData
With Worksheets("Statistik")
.Range("A30:AO30").Value = .Range("A28:AO28").Value
.Range("A30:AO30").Copy
.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial Paste:= _
xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
End With
Application.CutCopyMode = False
Range("B33").Select
Application.EnableEvents = True
End Sub
Mein Versuch einen Code von Sepp umzuschreiben, den er hier mal für die Ermittlung der ersten freien SPALTE gepostet hatte. Bin leider gescheitert. Vielleicht hat jemand eine Idee und dies wäre dann die Lösung.
Dim lngFirstFree As Long, strRange As String
strRange = Range(Cells(1, 30), Cells(Rows.Count, 33)).Address(0, 0)
lngFirstFree = Evaluate("MIN(IF(ISBLANK(" & strRange & _
"),Rows(" & strRange & ")))")
With Range("A30:AO30")
Cells(lngFirstFree, 33).Resize(.Rows.Count, 1) = .Value
End With