Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

sehr langsam

Betrifft: sehr langsam von: sbello
Geschrieben am: 13.08.2008 09:47:26

hallo liebe leute,

ich schaffe es einfach nicht festzustellen warum mein code so langsam meine zellen füllt.
habe ne userform mit textboxen, beim "klick" auf CBVUAnlegen, soll ein neuer datensatz geschrieben werden, nur macht er das für die einzelnen zellen, extrem langsam.

Private Sub CBVUAnlegen_Click()
Dim i As Long

With Sheets("VU")

i = .Cells(Rows.Count, 1).End(xlUp).Row + 1
    
    .Cells(i, 1) = TextBox1
    .Cells(i, 2) = TextBox3
    .Cells(i, 3) = TextBox2
    .Cells(i, 5) = TextBox4 * 1
    .Cells(i, 6) = TextBox5 * 1
    .Cells(i, 7) = TextBox6 * 1
    .Cells(i, 8) = USER
    .Cells(i, 9) = DATUM
    .Cells(i, 10) = TextBox7
        
    Dim Formula1    As String
      
    Formula1 = "=SUMIF(BR!E:E,VU!A" & i & "," & "BR!F:F)"
    .Cells(i, 4).Formula = Formula1
    
End With

    Sheets("VUID").Cells(1, 1).Value = Sheets("VUID").Cells(1, 1).Value + 1

Unload Me
VUAnlegen.Show

End Sub


  

Betrifft: AW: sehr langsam von: Rudi Maintaire
Geschrieben am: 13.08.2008 10:13:01

Hallo,
Application.ScreenUpdating=False/ True wirkt Wunder.

Gruß
Rudi


  

Betrifft: AW: sehr langsam von: sbello
Geschrieben am: 13.08.2008 10:24:59

hallo rudi,

hat nichts gebracht....

habe gerade festgestellt, die anderen userformen sind auch etwas langsammer als am anfang, mit was kann das zusammen hängen


  

Betrifft: AW: sehr langsam von: Rudi Maintaire
Geschrieben am: 13.08.2008 10:36:07

Hallo,
Tabellen werden größer, aufwändige Berechnungen, Change/ SelectionChange-Events, ....

Gruß
Rudi


  

Betrifft: AW: sehr langsam von: sbello
Geschrieben am: 13.08.2008 10:40:24

hatte mal die version von gestern durchlaufen lassen, die funzt ohne probleme........
werde noch mal weitersuchen.

vielleicht hast ja noch den ein oder anderen tipp

gruß zurück


  

Betrifft: AW: sehr langsam von: Daniel
Geschrieben am: 13.08.2008 12:57:26

Hi

deine Datentabelle enthält für jede Zeile eine SummeWenn-Formel.
(und vielleicht noch andere Formeln).
Diese werden immer neu berechnet, wenn sich im angegeben Zellbereich was ändert und Summe-Wenn Formeln sind halt nun mal langsam.

abhilfen, die du mal versuchen könntest, wären:
- Applicaton.Calulation abschalten (hinterher wieder einschalten nicht vergessen)
- die Textboxenergebnisse auf einen Schlag zurückschreiben und nicht einzeln (damit sollte dann nur eine neuberechnung stattfinen). das wäre der Code dazu: (nicht getestet, da keine Beispieldatei vorhanden Ist)

Private Sub CBVUAnlegen_Click()
    Dim i As Long
    Dim Formula1    As String
    Dim Eingabe(1 To 1, 1 To 10)
    
    With Sheets("VU")
    
    i = .Cells(Rows.Count, 1).End(xlUp).Row + 1
        
    'hier bitte die landesspzifische Zeile auswählen
    Formula1 = "=SUMIF(BR!E:E,VU!A" & i & "," & "BR!F:F)"
    Formula1 = "=SummeWenn(BR!E:E;VU!A" & i & ";" & "BR!F:F)"
        
        Eingabe(1, 1) = TextBox1
        Eingabe(1, 2) = TextBox3
        Eingabe(1, 3) = TextBox2
        Eingabe(1, 4) = Formula1
        Eingabe(1, 5) = TextBox4 * 1
        Eingabe(1, 6) = TextBox5 * 1
        Eingabe(1, 7) = TextBox6 * 1
        Eingabe(1, 8) = USER
        Eingabe(1, 9) = DATUM
        Eingabe(1, 10) = TextBox7
        
        .Cells(i, 1).Resize(1, 10) = Eingabe
    End With
    
        Sheets("VUID").Cells(1, 1).Value = Sheets("VUID").Cells(1, 1).Value + 1
    
    Unload Me
    VUAnlegen.Show
    
    End Sub



Gruß, Daniel


  

Betrifft: AW: sehr langsam von: sbello
Geschrieben am: 13.08.2008 13:23:11

hallo daniel,

dein code funktioniert gut, ist schon um einiges schneller. die textboxen auf einen schlag zu übergeben bringt deutliche vorteile, hatte auch schon soweit gedacht, aber eben keine möglichkeit gesehen - geniale lösung! danke! werde das bei meinen anderen userformen auch versuchen.

application.calulation? wie einsetzen?

danke für die hilfe!

gruß
stefano


  

Betrifft: AW: sehr langsam von: Daniel
Geschrieben am: 13.08.2008 14:02:17

hI

Application.Caluclation = xlManual
... hier der Code
Application.Calulation = xlAutomatic

verhindert, daß während des Codeablaufs die Zellen mit Formeln neu berechnet werden.
das kann sich in Dateien mit vielen und langsamen Formeln positiv auf die Geschwindigkeit auswirken, könnte aber auch das Ergebis verfälschen (das muss man halt testen)
auf jeden Fall sollte man nicht vergessen, am ende wieder die Ursprungseinstellung herzustellen

Gruß, Daniel


 

Beiträge aus den Excel-Beispielen zum Thema "sehr langsam"