2017-02-21 1 views
0

Ich habe ein VBA-Skript, das ich Apostroph zu Zellen hinzufügen, aber ich habe derzeit 200000 Zeilen zu überprüfen, und es scheint sehr lange dauern. Der Code, den ich verwende, ist die folgenden:Excel-VBA-Skript zum Hinzufügen von Apostroph langsam

Sheets("Sheet1").Select 
    myrange = "c21:c200000" 
    For Each cell In ActiveSheet.Range(myrange) 
    If cell.Value <> "" Then cell.Value = "'" & cell.Value 
    Next 

Alle Ideen, wie Sie den Code schneller laufen zu machen, oder wissen Sie irgendeinen anderen Code, der besser funktionieren könnte?

+1

'.NumberFormat = "@" '? – Comintern

+0

Verwenden Sie vbNullstring anstelle von "". Es wird Ihren Code nicht reparieren, aber es ist eine gute Übung. –

+1

Gibt es auch einen Grund, diesen Prozess auf dem Arbeitsblatt auszuführen? Das Laden Ihres Bereichs in ein Array und das anschließende Durchlaufen des Arrays ist erheblich schneller. –

Antwort

0

Ich verstehe nicht, was Sie mit dem Apostroph erreichen wollen, aber in der Regel können Sie alle leeren Zellen füllen, indem sie den Bereich zu begrenzen und schreiben sofort auf alle von ihnen:

Const DefaultString = "'" 
Dim ws As Worksheet, r As Range 
Set ws = ThisWorkbook.Sheets(1) 

Set r = ws.Range("A1:A200000") 
' Fill last cell to ensure that SpecialCells looks to complete range 
If r.Cells(r.Rows.Count, 1) = "" Then r.Cells(r.Rows.Count, 1) = DefaultString 
Set r = r.SpecialCells(xlCellTypeBlanks) 
r.Value2 = DefaultString 
+0

Wenn es vernünftigerweise angenommen werden kann, dass * 200000 Zeilen * eine off-the-Cuff-Referenz (und sie sind in der Regel) sind, warum nicht? Set r = ws.Range (ws.cells (21, "C"), ws.cells (rows.count, "C"). End (xlup)) '? – Jeeped