Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
576to580
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
576to580
576to580
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Suche mit For...next dauert zu lange

Suche mit For...next dauert zu lange
28.02.2005 07:04:18
Sebastian
Guten Morgen,
ich habe eine Excel-Datei, in der stehen ca. 5600 Adresseinträge.
In meiner UserForm habe ich eine Suchfunktion mit For...next.
Wenn ein TextFeld geändert wird, sprich eine Eingabe erfolgt, durchsucht er für jeden Buchstaben, der eingegeben wird die entsprechenden Einträge.
Bsp.:
Eingabe ist A
Er sucht alle die mi A anfangen.
Nächste eingabe ist b
Es steht in der TextBox nun Ab
Er sucht alle Einträge die mit Ab anfange.
usw.
Hier ist der Code den ich verwende:
If txtKarteiNr "" And txtKarteiNr "Kartei-Nr." Then
Windows("KarteiGäste.xls").Activate
Sheets("Liste").Select
Range("A2:H65536").ClearContents
Sheets("Kartei").Select
Dim wks As Worksheet
Dim k&, i&

Set wks = Sheets("Liste")
k = 2
With Sheets("Kartei")
For i = 4 To .Cells(Rows.Count, 1).End(xlUp).Row
If .Cells(i, 1) = txtKarteiNr Then
k = k + 1
.Range(.Cells(i, 1), .Cells(i, 8)).Copy wks.Cells(k, 1)
End If
Next
End With
Sheets("Liste").Select
With lbxKartei
.RowSource = "Liste!A3:H" & Sheets("Liste").Range("J1")
.ColumnWidths = "20;120;70;70;90;30;40;70"
End With
Windows("Hotel 1.0.xls").Activate
End If
If txtKarteiNr = "" Then
Windows("Karteigäste.xls").Activate
Sheets("Kartei").Select
With lbxKartei
.RowSource = "Kartei!A5:H" & Sheets("Kartei").Range("Z3")
.ColumnWidths = "20;120;70;70;90;30;40;70"
End With
Windows("Hotel 1.0.xls").Activate
End If
Jetzt dauert dieser Suchvorgang entsprechend lange bei 5600 Einträgen.
kann man das ganze schneller machen?
MfG
Sebastian

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Suche mit For...next dauert zu lange
Heiko
Moin Sebsatian,
hast du schon den Standard für schneller machen drin.
Application.Screenupdating = False
Application.Calculation = xlCalculationManual
' dein Makro mit Schleife usw.
Application.Screenupdating = False
Application.Calculation = xlCalculationAutomatic
Gruß Heiko.
Application.Screenupdating = True
kleiner
Application.Screenupdating = False
Application.Calculation = xlCalculationManual
' dein Makro mit Schleife usw.
Application.Screenupdating = True
Application.Calculation = xlCalculationAutomatic
Stimmt, is noch früh ! o.w.T.
Heiko
.
AW: Stimmt, is noch früh ! o.w.T.
01.03.2005 06:58:41
Sebastian
Hallo,
das klappt super, einziges problem:
wenn ich z.B. beim Nachnamen B eingebe,
zeigt er mir nur einen Teil aller Nachnamen
die mit b beginnen und nicht alle.
gruß
Sebastian
Anzeige
AW: Stimmt, is noch früh ! o.w.T.
01.03.2005 08:24:38
Heiko
Moin Sebastian,
wie der Name Application.ScreenUpdating = False schon sagt, wird damit die Bildschirmaktualisierung unterbrochen.
1. Abhilfe, nicht soviel mit Select arbeiten, damit geht es dann auch schon schneller.
denn
TestVariable = Workbooks("Mappe1").Sheets("Tabelle1").Range("A1").Value
ist das gleiche wie,
Workbooks("Mappe1").Activate
Sheets("Tabelle1).Activate
Range("A1").Select
TestVariable = ActiveCell.Value
Die erste Variante ist nur schneller.
2. Du musst schauen wann du eine Bildschirmaktualisierung brauchst, ich denke doch nur wenn du was gefunden hast. Also wenn eine IF Bedingung erfüllt ist, dann kannst du darin ja kurz Application.ScreenUpdating = True setzen und dann wieder false.
Gruß Heiko
Anzeige
Problem behoben
Sebastian
Hallo heiko,
habe den fehler gefunden. Hatte deine erste Version kopiert, wo am ende noch mal
Application.ScreenUpdating = False
stand und habe das ganze jetzt ersetzt durch
Application.ScreenUpdating = True
Nun funktionierts.
Danke für deine Hilfe.
Sebastian

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige