Avatar billede spoi Nybegynder
01. februar 2007 - 11:17 Der er 4 kommentarer og
1 løsning

langsom kode - mega langsom

Det er nederste del af koden der er alt for langsom

Her skal de fire første tegn i kolonne A fjernes.  Nogen der kan og vil hjælpe. Kan det gøres hurtigere.

Dim RW As Long, I As Long


'importerer tekstfilen og sætter den ind med start i celle A2 og starter i række 2 i tekstfilen
    With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;H:\Pipeline\HO-Inventsum.txt", _
        Destination:=Range("A2"))
        'Destination:=Selection)
        .Name = "HO-OpenSalesLines"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlOverwriteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = False
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = xlWindows
        .TextFileStartRow = 2
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = False
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = True
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(1, 1, 1, 1)
        .Refresh BackgroundQuery:=False
    End With
ActiveSheet.QueryTables.Item(1).Refresh BackgroundQuery:=False

'sletter fire første tegn i kolonne A
RW = ActiveSheet.Range("A65536").End(xlUp).Row
For I = 2 To RW
Cells(I, "A") = Right(Cells(I, "A"), Len(Cells(I, "A")) - 4)
Next

End sub
Avatar billede learningvba Nybegynder
01. februar 2007 - 13:54 #1
Hvis du kan fjerne før du sætter ind vil det måske hjælpe lidt.
Alternativt kan du måske hive dem ud i en array, manipulere, og lægge tilbage med lidt inspiration fra denne artikel: http://www.eksperten.dk/artikler/522
Avatar billede learningvba Nybegynder
01. februar 2007 - 13:58 #2
F.eks.
Sub Fjern4FraA()
  Dim MyArray As Variant
  Dim lngX As Long
  Debug.Print Now
  MyArray = Range("A1:A" & Trim(Str(ActiveSheet.Range("A65536").End(xlUp).Row)))
  For lngX = LBound(MyArray) To UBound(MyArray)
      MyArray(lngX, 1) = Right(MyArray(lngX, 1), Len(MyArray(lngX, 1)) - 4)
  Next lngX
  Range("B1:B" & Trim(Str(ActiveSheet.Range("A65536").End(xlUp).Row))) = MyArray
  Debug.Print Now
End Sub

(<1sek her)
Avatar billede spoi Nybegynder
01. februar 2007 - 14:22 #3
'Sletter de første 4 tegn i kolonne C
   
Sådan er fungerer det perfekt, omend jeg ikke helt forstår havd der sker. Hvis du gider forklare lidt? Point til dig under alle omstændigheder- Læg svar.

    Dim MyArray As Variant
  Dim lngX As Long
  Debug.Print Now
  MyArray = Range("A2:A" & Trim(Str(ActiveSheet.Range("A65536").End(xlUp).Row)))
  For lngX = LBound(MyArray) To UBound(MyArray)
      MyArray(lngX, 1) = Right(MyArray(lngX, 1), Len(MyArray(lngX, 1)) - 4)
  Next lngX
  Range("A2:A" & Trim(Str(ActiveSheet.Range("A65536").End(xlUp).Row))) = MyArray
  Debug.Print Now
Avatar billede learningvba Nybegynder
06. februar 2007 - 07:52 #4
Jeg "snød" lidt på vægten :-), jeg brugte bak's artikel (http://www.eksperten.dk/artikler/522) om Array's og Excel.
(I artiklen står der også en længere forklaring, og vil ikke kaste mig ud i at forklare det bedre :-) )

Jeg er glad for at det hjalp dig.
Avatar billede spoi Nybegynder
16. august 2007 - 07:14 #5
Det gjorde det helt sikkert.
Mange tak
Og undskyld forsinkelsen med point

LN
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester