Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1428to1432
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Code Beschleunigen?

Code Beschleunigen?
12.06.2015 09:35:39
Stefan
Hi Leute,
ich Kopiere momentan aus 3 Sheets (Range ca. A1:Z40) in ein "gesamt" Sheet. Es werden noch einige Sheets dazu kommen und es dauert jetzt schon ziemlich lange.
Könnte man hier noch was optimieren?
Private Sub start_Click()
Dim zelle As Long
Dim i As Long
Dim iZeile As Integer
Dim z as Integer
Application.ScreenUpdating = False
Worksheets("SystemFMEA").Visible = xlSheetVisible
Worksheets("SystemFMEA").Select
Worksheets("OverAlL").Visible = xlVeryHidden
For i = 1 To Sheets.Count
If Sheets(i).Name  "Menu" And Sheets(i).Name  "SystemFMEA" And _
Sheets(i).Name  "Analysis" And Sheets(i).Name  "OverAll" _
And Sheets(i).Name  "list" And Sheets(i).Name  "FMEA" Then
With Worksheets(i)
z = .Range("N" & Rows.Count).End(xlUp).Row
For zelle = 13 To z
If IsNumeric(TextBox1.Value) = True And _
Worksheets("OverAlL").CheckBoxTech.Value = True _
And CheckBoxTech.Caption = .Range("B4").Value _
And Worksheets("OverAlL").CheckBoxProd.Value = True _
And CheckBoxProd.Caption = .Range("B4").Value _
And Worksheets("OverAlL").CheckBoxSys.Value = True _
And CheckBoxSys.Caption = .Range("B4").Value _
And Worksheets("OverAlL").CheckBoxTool.Value = True _
And CheckBoxTool.Caption = .Range("B4").Value _
And Worksheets("OverAlL").CheckBoxNon.Value = True _
And CheckBoxNon.Caption = .Range("B4").Value _
Or Worksheets("OverAlL").ComboBox2.Value = Sheets(i).Range("B3").Value _            _
Or Worksheets("OverAlL").ComboBox2.Value = "" Then
If .Range("N" & zelle).Value >= CInt(TextBox1.Value) _
And .Range("N" & zelle).Value  "" Then
.Range("N" & zelle, "B" & zelle).Copy
iZeile = Sheets("SystemFMEA").Cells(.Rows.Count, 9).End(xlUp).Row
Sheets("SystemFMEA").Cells(iZeile + 1, 9).PasteSpecial xlPasteValues
.Range("B2").Copy
Sheets("SystemFMEA").Cells(iZeile + 1, 1).PasteSpecial xlPasteValues
.Range("B3").Copy
Sheets("SystemFMEA").Cells(iZeile + 1, 2).PasteSpecial xlPasteValues
End If
'Else: Exit Sub
End If
Next zelle
End With
End If
Next i
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub

Dankeschön :)
Grüße,
Stefan

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Code Beschleunigen?
12.06.2015 09:50:49
Daniel
Hi
1. auf einen schnellen blick schaut es so aus, als wäre die Bediungsprüfung deines IFs unabhängig von der Schleifenvariable "Zelle" , dh bei jedem Schleifendurchgang kommt immer das gleiche raus.
dann sollte man die Bedingungsprüfung VOR der Schleife ausführen und nicht IN der Schleife
es gibt auch Bedingungen, die sind auch nicht abhängig von der erste Schleife mit i, diese Prüfungen solltest du ganz an den Anfang stellen.
2. wenn du viele Bediungen hast, die mit AND verbunden sind, dann ist es sinnvoller dies durch ineinander geschachtelte IF-Blöcke darzustellen:
Langsam ist
IF A AND B Then

Schneller ist:
IF A Then
IF B Then

das liegt daran, dass im ersten Fall immer alle Bediungungen geprüft werden, im zweiten Fall wird B jedoch nur dann geprüft, wenn A bereits erfüllt ist und damit weniger oft.
Gruß Daniel
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige