so funktioniert das nicht. Deine Formel war doch sehr viel kürzer. Ich weis das du(als Monika) wegen deiner übelst langen Formel schon hier im Forum gefragt hast. Mein Code ersetzte nur die ersten 3 Zeilennummern in der Formel. Das habe ich aber auch schon erwähnt. Grund ist, das weiter hinten in der Verweisformel die Spaltennummer angegeben ist und die auch als Zahl sonst ersetzt werden könnte.
Also mit de Zeichenlängen bin ich überfragt. Ich bin ja auch kein Programmierprofi und muß das auch nicht wissen.
Hier mal eine andere Variante.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'target ist die gerade ausgewählte zelle
If Target.CountLarge > 1 Then Exit Sub
If Target.Column = 1 Or Target.Column = 2 Then 'spalte A oder B
If Target.Row > 1 And Target = "" Then 'ist zelle leer
'ist Zelle oben drüber nicht leer
If Target.Offset(-1) <> "" Then
Application.EnableEvents = False
formelnschreiben
Application.Goto Target
Application.EnableEvents = True
End If
End If
End If
End Sub
Sub formelnschreiben()
Dim arSp, itm, rng As Range, i As Long, bolisformula As Boolean
Dim stextformula As String
Dim lrow As Long
'Array mit den zu ersetzenden Spaltennummern
arSp = Split("G,H,I,K,M,O", ",")
lrow = ActiveCell.Row
On Error GoTo ERRORHANDLING
Application.ScreenUpdating = False
For Each itm In arSp
Set rng = Intersect(UsedRange, Columns(itm))
If Not rng Is Nothing Then
For i = rng.Rows.Count To 1 Step -1
If rng(i, 1).HasFormula Then
rng(i, 1).Copy
Cells(lrow, rng.Column).PasteSpecial 11
Application.CutCopyMode = False
Exit For
End If
Next
End If
Next
ERRORHANDLING:
Application.ScreenUpdating = True
End Sub
|