Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
664to668
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
664to668
664to668
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Code verkürzen

Code verkürzen
13.09.2005 23:07:53
Tinu
Liebe VBA-Freaks
Den folgenden Code habe ich mir zusammengebastelt um aus einer UserForm-ListBox mit Mehrfachselektion aus Tabelle 1 alle Datensätze Spalten A bis E rauszusuchen, welche in Spalte A mit der Selektion der Listbox übereinstimmen und diese nach Tabelle 2 zu kopieren. Es können pro Selektion mehrere Datensätze sein. Der Code funktioniert zwar, ist aber recht langsam. Gibt es da nicht eine schnellere Methode?
Für Hilfe wäre ich sehr dankbar!
Gruss
Tinu

Private Sub cb_COPY_Click()
Dim iRow As Integer, jCounter As Integer
Dim x As Integer, lz As Integer
jCounter = 0
Worksheets("Tabelle2").Range("A1:F500").ClearContents
With ThisWorkbook.Sheets("Tabelle1")
lz = .Range("A65536").End(xlUp).Row
For x = 3 To lz
For iRow = 0 To lstAuswahl.ListCount - 1
If lstAuswahl.Selected(iRow) Then
If (.Cells(x, 3)) = lstAuswahl.List(iRow) Then
.Range(.Cells(x, 1), .Cells(x, 5)).Copy _
Worksheets("Tabelle2").Range("A" & 1 + jCounter)
jCounter = jCounter + 1
End If
End If
Next
Next
End With
Unload Me
End Sub

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Code verkürzen
13.09.2005 23:49:29
MichaV
Hallo Tinu,
mein Vorschlag:
Die Anzahl der Elemente in der ListBox ist wohl geringer als die Elemente in der Tabelle. Außerdem kann man die schneller abgreifen.
Prüfe also jedes Element der ListBox ob es angewählt ist. Suche das gewählte Element dann per Find und FindNext in Deiner Tabelle und kopiere die Treffer.
Wenn Du Hilfe bei der Umsetzung brauchst dann melde Dich kurz.
Gruß- Micha
PS: Rückmeldung wäre nett.
AW: Code verkürzen
13.09.2005 23:56:56
Tinu
Hallo Micha
Danke für deine schnelle Antwort. Mit der Umsetzung habe ich etwas Mühe. Also mit "If lstAuswahl.Selected(iRow) Then" wollte ich eigentlich - wie Du vorschlägst - abfragen, ob das Element angewählt ist. Wie Du das aber nachher mit Find FindNext weiterverarbeiten willst, ist mir unklar. Deine Annahme ist übrigens korrekt, die Tabelle enthält wesentlich mehr Elemente, als die ListBox.
Gruss
Tinu
Anzeige
AW: Code verkürzen
13.09.2005 23:58:20
MichaV
Hallo Tinu,
siehe Nepumuk, der hats schon aufgeschrieben.
Gruß- Micha
AW: Code verkürzen
13.09.2005 23:52:22
Nepumuk
Hi,
kürzer wird er nicht, aber schneller:
Private Sub cb_COPY_Click()
    Dim objCell As Range, strAddress As String
    Dim intRow As Integer, lngCounter As Long
    Worksheets("Tabelle2").Range("A1:F500").ClearContents
    With ThisWorkbook.Sheets("Tabelle1")
        For intRow = 0 To lstAuswahl.ListCount - 1
            If ListBox1.Selected(intRow) Then
                Set objCell = .Columns(3).Find(What:=lstAuswahl.List(intRow), _
                    After:=.Cells(.Rows.Count, 3), _
                    LookIn:=xlFormulas, LookAt:=xlWhole)
                If Not objCell Is Nothing Then
                    strAddress = objCell.Address
                    Do
                        lngCounter = lngCounter + 1
                        .Range(.Cells(objCell.Row, 1), .Cells(objCell.Row, 5)).Copy _
                            Worksheets("Tabelle2").Cells(lngCounter, 1)
                        Set objCell = .Columns(3).FindNext(objCell)
                    Loop While Not objCell Is Nothing And objCell.Address <> strAddress
                End If
            End If
        Next
    End With
    Unload Me
End Sub

Gruß
Nepumuk

Anzeige
<gggg>
13.09.2005 23:55:09
MichaV
Hallo Nepumuk,
hast meinen Vorschlag in 2 Minuten umgesetzt ;o) wow!
Gruß- Micha
AW: <gggg>
14.09.2005 00:03:48
MichaV
Hallo Nepumuk,
wie Ramses sagt: "Denn gegen Nepumuk anzutreten ..., nun ja " ... ;o)
Ich guck mal genauer rein, aber erst nach dem Schlafen.
Gruß- Micha
Anzeige
AW: Code verkürzen
14.09.2005 00:06:27
Tinu
Vielen Dank euch beiden!!
wieder was dazugelernt :)
Gruss
Tinu

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige