2017-01-03 3 views
1

ich diesen Code verwenden, um eine Länge Formel anzuwenden und dann Autofill, bis die letzten sichtbaren Zelle aber einen Fehlereine Formel anwenden und dann Autofill die Daten, bis letzte sichtbare Zelle in der Spalte: VBA

Runtime Error 'bekommen 1004'- Method 'Bereich' von object_Global‘failed

-Code

Range("C2").Select 
ActiveCell.FormulaR1C1 = "=LEN(RC[-1])" 
Selection.AutoFill Destination:=Range("C2:C" & Lastrow).SpecialCells(xlCellTypeVisible).Select 
Selection.Copy 
+1

Wenn Sie nicht wirklich für spezielle Zellen suchen, verwenden Sie einen 1-Liner wie 'Range ("C2: C" & Range ("B" & Rows.Count) .End (xlUp) .Row). FormulaR1C1 = "= LEN (RC [-1])" ' – nightcrawler23

Antwort

1

A s immer ist es besser, weg von Select, ActiveCell und Selection zu bleiben.

den Code Versuchen Sie unter:

Dim FitRng As Range, Lastrow As Long 

Range("C2").FormulaR1C1 = "=LEN(RC[-1])" 

Set FitRng = Range("C2:C" & Lastrow).SpecialCells(xlCellTypeVisible) 
FitRng.FillDown 

Wenn Sie die FillDown Methode nicht verwenden möchten, können Sie einfach:

FitRng.FormulaR1C1 = "=LEN(RC[-1])" 
+0

müssen Sie nicht auch' Lastrow' definieren ?? – nightcrawler23

+0

@ nightcrawler23 Ich korrigierte nur den Teil, den die PO freigegeben hat –

+0

Ich lief den ursprünglichen Code und es gab Fehler nur wegen der Variablen nicht definiert, was bedeutet, dass das ursprüngliche Problem war. Die Optimierung des Codes war nicht das Problem – nightcrawler23

1

aus dem Code es Ihnen, die Länge wollen scheint Zellen in COl B. Der folgende Code funktioniert für mich.

Sub x() 
    Range("C2:C" & Range("B" & Rows.Count).End(xlUp).Row).SpecialCells(xlCellTypeVisible).FormulaR1C1 = "=LEN(RC[-1])" 
End Sub 
Verwandte Themen