AW: noch eine Frage.. ...... beim Kopieren
08.05.2022 22:12:35
Yal
Hallo Eisi,
dann geht es nicht "en Block". Da muss man jede Spalte einzeln übertragen.
Beschäftige Dich mit dem Offset. Du scheinst nicht um klaren, was es bewirkt und wie man es einsetzt. Lege den Cursor auf Offset und drücke Strg+F1. Da kommst Du auf die Online-Hilfe von Offset. Grundlich durchlesen ;-)
Die Lösung (ungestestet):
Sub Positionen_2_SchichtPlatten()
Dim NeueZeile As Long
VBARun_optimieren True
With tbl_Kalkulation
.Unprotect ("20")
'letzte Zeile in Spalte F finden und eins tiefer gehen
NeueZeile = .Cells(Rows.Count, "F").End(xlUp).Offset(1, 0).Row
' Überschrift übertragen, Punkt färben
.Cells(NeueZeile, "F") = .Range("F15").Value
.Cells(NeueZeile, "F").Offset(2, 0).FormulaR1C1 = "."
.Cells(NeueZeile, "F").Offset(2, 0).Font.Color = vbRed
'Filtern: nur wo in Spalte B "" steht
.Range(.Range("A23"), .Range("P99999").End(xlUp)).AutoFilter Field:=2, Criteria1:="", Operator:=xlFilterValues
' Daten übertragen
.Cells(NeueZeile, "F") = .Range("F24:F35")
.Cells(NeueZeile, "G").Offset(0, 2) = .Range("G24:G35") 'gleiche Ziel-Zeile (=NeueZeile), Ziel-Spalte 2 Spalten nach rechts
.Cells(NeueZeile, "H") = .Range("H24:H35") 'gleiche Ziel-Zeile, gleiche Ziel-Spalte, entspricht Offset(0, 0). erspart, weil wirkungslos.
.Cells(NeueZeile, "P").Offset(0, 8) = .Range("P24:P35") 'gleiche Zeile, 8 Spalten nach rechts
'Filter zurücksetzen
.Range("A23").AutoFilter
' .Protect ("20")
End With
Application.CutCopyMode = False
VBARun_optimieren = False
End Sub
Private Sub VBARun_optimieren(Anmachen As Boolean)
Application.Calculation = IIf(Anmachen, xlCalculationManual, xlCalculationAutomatic)
Application.ScreenUpdating = Not Anmachen
Application.EnableEvents = Not Anmachen
End Sub
VG
Yal