Microsoft Excel

Herbers Excel/VBA-Archiv

AutoFill dauert ewig!

Betrifft: AutoFill dauert ewig! von: Snewi
Geschrieben am: 01.11.2012 10:56:54

Hi,

ich habe eine Formel die ich nach einer Abfrage aktualisieren muss!
Das mache ich über:

Selection.AutoFill Destination:=Range("A2:A20000"), Type:=xlFillDefault
Das dauert bei mir über 8 min! Geht das auch schneller oder anders?

Gruß

  

Betrifft: AW: AutoFill dauert ewig! von: Klaus M.vdT.
Geschrieben am: 01.11.2012 11:01:05

Hi Snewi,
erstmal auf select / selection verzichten. Immer!
ich rate jetzt mal, die selection ist Zelle A1? Dann versuchs so:

Range("A1").Copy Range("A2:A20000")
AutoFill im VBA-Code ist eine Krankheit des Makrorekorders. Du hast beim Aufzeichnen die Zelle am schwarzen Punkt angepasst und gezogen, das wurde auch aufgezeichnet. Autofill ist schlicht langsamer als Copy, welches ziemlich exakt das gleiche macht.

Grüße,
Klaus M.vdT.


  

Betrifft: AW: AutoFill dauert ewig! von: Snewi
Geschrieben am: 01.11.2012 11:24:49

Hammer geht viel schneller! Danke!

Gibt es auch was anderes für Text in Spalten als das:

Columns("A:A").Select
    Selection.TextToColumns Destination:=Range( _
        "Tabelle_Abfrage_von_sgarchi[[#Headers],[HEAT_NAME]]"), DataType:=xlDelimited _
        , TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
        :=Array(1, 1), TrailingMinusNumbers:=True
gruß


  

Betrifft: AW: AutoFill dauert ewig! von: Klaus M.vdT.
Geschrieben am: 01.11.2012 11:38:35

Hallo Snewi,
aus deinen Codefetzen sehe ich, dass du sehr viel Makrorekorder Code benutzt. Nützt ja auch nichts, wenn man ihn nicht selbst schreiben kann ... aber Rekordercode muss fast prinzipiell bereinigt werden. Faustregel: die Worte "select", "activate" und "selection" haben in einem Code nichts zu suchen² es sei denn du WILLST explizit selektieren oder aktivieren.
Viel besser als ich es je könnte erklärt es Peter Haserodt:
http://www.online-excel.de/excel/singsel_vba.php?f=78

Lies das mal komplett durch, es hilft!

Zu deiner Frage: Erstmal das select raus:

Columns("A:A").TextToColumns Destination:=Range( _
        "Tabelle_Abfrage_von_sgarchi[[#Headers],[HEAT_NAME]]"), DataType:=xlDelimited _
        , TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
        :=Array(1, 1), TrailingMinusNumbers:=True

Und dann vermute ich, dass es sehr lange dauert weil du tatsächlich die gesamte Spalte nimmst. Ungetestet, probiers mal so:
lRow = Range("A65536").end(xlup).row
Range("A1:A" & lRow).TextToColumns Destination:=Range( _
        "Tabelle_Abfrage_von_sgarchi[[#Headers],[HEAT_NAME]]"), DataType:=xlDelimited _
        , TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
        :=Array(1, 1), TrailingMinusNumbers:=True
Grüße,
Klaus M.vdT.

²ausnahmen gibt es natürlich immer


  

Betrifft: AW: AutoFill dauert ewig! von: Snewi
Geschrieben am: 01.11.2012 12:03:55

Ok ich werd mal ein bischen lesen und wieder was lernen!

Danke und Gruß