Hallo Tweety,
zunächst mal ein Lob, du hast z1 als Long deklariert, das ist perfekt, mach das auch bitte grundsätzlich nicht nur bei Zeilen sondern auch bei Spalten.
Jetzt komentiere ich mal deinen Code, ich kann nur hoffen daß du es nicht als persönlichen Angriff siehst sondern als Tipps wie du es besser und sicherer machen kannst.
Zum Namen der Prozedur, du hast sie „autofill“ genannt, würde ich nie machen, denn „autofill“ ist ein Name der Excel-vba bekannt ist und es versteht darunter halt seine eigene Autofillprozedur.
D.h: ich kann nicht 100,0000 %ig ausschließen daß mal irgendwann wegen des Namens zu problemen kommen KÖNNTE.
Also benutze myAutofill Autofuellen oder was immer du willst.
Und du siehst, auch nicht ö,ü,ä benutzen, Vorsicht ist die Mutter der Porzellankiste.
Von mir aus kannste die Schreibweise [A1] benutzen. Mir ist nichts bekannt daß es damit zu problemen kommt im Vergleich mit Range(„A1“).
ABER, du schreibst ja jetzt den Code und vielleicht soll er ja auch in Excel2007 laufen mit > 1 Mio Zeilen und jmd. nutzt dies auch aus, dann scheitert dein Code.
machs so:
zl = cells(rows.count,3).End(xlUp).Row
dann klappts auch in 2007.
Und, du brauchst weder Select noch Autofill:
Probiers mal so:
Sub Autofuellen()
Dim zl As Long
zl = Cells(Rows.Count, 3).End(xlUp).Row
Range(„D3:smiley:“ & zl).FormulaR1C1 = „=IF(RC[-3]=R[-1]C[-3],RC[-2]-R[-1]C[-1],“""")"
End Sub
Gruß
Reinhard