Microsoft Excel

Herbers Excel/VBA-Archiv

schlechte Performance, aber warum?



Excel-Version: 8.0 (Office 97)

Betrifft: schlechte Performance, aber warum?
von: rainer
Geschrieben am: 04.06.2002 - 08:44:45

Hallo! Ich habe unten gelistetes Coding. An der markieren Stellen dauert es relativ lange bis Excel die zwei Befehle ausgeführt hat. Habe ich da ungeschickt programmiert? Wer kann mir hier weiterhelfen?
Vielen Dank
Rainer
Hier das Coding:
tb1.Select
With tb1.Range("a6:aa6")
Set zelle = .Find("PI", LookIn:=xlValues)
If Not zelle Is Nothing Then
quellspalte_pi = zelle.Column
End If
Set zelle = .Find("V0", LookIn:=xlValues)
If Not zelle Is Nothing Then
quellspalte_v0 = zelle.Column
End If
End With
'-------------------------------------------------------------
'----werte in Indexverlauf eintragen
'-------------------------------------------------------------
For Each zelle In tb1.Range(Cells(7, 25), Cells(lr_download, 25))
schlüssel = zelle.Value
rewert = Cells(zelle.Row, quellspalte_v0).Value
Index = Cells(zelle.Row, quellspalte_pi).Value
mat = Cells(zelle.Row, 5).Value
lief = Cells(zelle.Row, 3).Value
lname = Cells(zelle.Row, 4).Text
On Error Resume Next
zeile_gefunden = Application.Match(schlüssel, arr_bereich, 0)
'--wenn treffer, dann wert in zeile eintragen
If zeile_gefunden > 0 Then
'-------> hier ist mein Problem!!!!!!!!!!!!!!!!!!!
tb2.Cells(zeile_gefunden, spalte).Value = Index
tb2.Cells(zeile_gefunden, spalte + 1).Value = rewert
'---ab hier geht es wieder zügig
End If
'-- wenn kein treffer, dann neue zeile
If zeile_gefunden < 1 Then
lr_index = tb2.Cells(Rows.Count, 1).End(xlUp).Row
tb2.Cells(lr_index + 1, spalte).Value = Index
tb2.Cells(lr_index + 1, spalte + 1).Value = rewert
tb2.Cells(lr_index + 1, 2).Value = lief
tb2.Cells(lr_index + 1, 4).Value = mat
tb2.Cells(lr_index + 1, 3).Value = lname
tb2.Cells(lr_index + 1, 1).Formula = "=CONCATENATE(B" & lr_index + 1 & ",D" & lr_index + 1 & ")"
End If
Next zelle
  

Re: schlechte Performance, aber warum?
von: Hans W. Hofmann
Geschrieben am: 04.06.2002 - 10:08:34

Hallo auch,

naja jeder Eintrag in eine Zelle löst eine Neuberechnung des Tabellenblattes aus. Das bremst...

Gruß HW


  

na klar......
von: rainer
Geschrieben am: 04.06.2002 - 11:35:54

Hallo Hans! Natürlich hast du recht!! Ich habe am Anfang application.calculation=false gesetzt umd am Schluß wieder auf true gesetzt und siehe da es geht viiiiel schneller... ;-)