Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1472to1476
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

VBA Schleifen

VBA Schleifen
06.02.2016 13:28:53
Kathleen
zum Suchen von Daten in einer Excel Tabelle habe ich mir eine UserForm zusammengebastelt.
Wenn jetzt bestimmte Optionen erfüllt sind, soll eine Tabelle durchsucht werden und die Suchwerte nacheinander in ein anderes Tabellenblatt geschrieben werden.
Irgendwie krieg ich aber die Schleife nicht vernünftig aufgebaut, so dass er mit zwar die richtigen Ergebnisse in das andere Tabellenblatt schreibt, aber dies solange tut bis ein neuer Treffer gefunden wurde. Habe dann beispielsweise 4 mal suchergebniss 1, dann 2 mal sucherergebnis 2 usw.
Wie muss ich dann die Schleife richtig aufbauen? Ich hab nen Brett vorm Kopf.
Hier die Schleife:
Dim cboDicke As String
Dim cboFarbe As String
Dim lngLZ As Long
lngLZ = Sheets("tabelle1").Cells(1048576, 1).End(xlUp).Row
cboDicke = ComboBox1.Value
cboFarbe = ComboBox2.Value
For i = 1 To lngLZ
If optR1HL1 = True And optR7HL1 = True Then
Sheets("Tabelle1").Select
If Cells(i, 2) = cboDicke And Cells(i, 3) = cboFarbe And Cells(i, 4) Like "*HL 1*" And Cells(i, 5) Like "*HL 1*" _
Then Sheets("Tabelle1").Range("A" & i, "H" & i).Copy
Sheets("Tabelle3").Cells(i, 1).PasteSpecial Paste:=xlPasteAll
Next
Danke
Kathleen

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

Betreff
Datum
Anwender
Anzeige
AW: VBA Schleifen
06.02.2016 14:12:49
Daniel
Hi
wenn du nach dem THEN den nächsten Befehl in die gleiche Programmzeile schreibst, dann muss der vollständige IF-Block in dieser Schleife abgehandelt werden.
So wie du das schreibst, gehört das PasteSpecial nicht mehr zum If-Block und wird bei jedem Schleifenumlauf ausgeführt
wenn du mehrere Befehle hast, die zum IF-Block gehören, musst du also entweder alle mit ":" getrennt in eine Zeile schreiben oder mit End IF arbeiten:
Variante 1: IF-End If
IF ... Then
Sheets("Tabelle1").Range("A" & i, "H" & i).Copy
Sheets("Tabelle3").Cells(i, 1).PasteSpecial Paste:=xlPasteAll
End If
Variante 2: alles in eine Zeile:
IF ... Then Sheets("Tabelle1").Range("A" & i, "H" & i).Copy: Sheets("Tabelle3").Cells(i, 1).PasteSpecial Paste:=xlPasteAll
Variante 2 ist eigentlich nur dann sinnvoll, wenn nach dem THEN nur ein Befehl folgt, ansonsten ist der Block mit END IF übersichtlicher.
in deinem Fall kann man aber das kopieren und einfügen in einem Befehl abarbeiten:
IF ... Then Sheets("Tabelle1").Range("A" & i, "H" & i).Copy Destination:=Sheets("Tabelle3").Cells(i, 1)
Gruß Daniel

Anzeige
AW: VBA Schleifen
06.02.2016 14:51:37
Kathleen
ok danke funktioniert...
dann kann ich mich ja jetzt dran machen die zweite Schleife mit reinzuprogrammieren.
die Sucherergebnisse sollen untereinander geschrieben werden ohne Leerzeilen...

AW: VBA Schleifen
06.02.2016 14:56:29
Daniel
nimm für die Zeilennummer zum einfügen eine eigene Varable (j statt i)
diese musst du dann aber im Code selber hochzählen.
Gruß Daniel

AW: VBA Schleifen
06.02.2016 15:39:20
Kathleen
immer diese Schleifen.... bin denen hab ich es nicht so...
wo muss ich denn die 2. Schleife einbauen...
so funzt es leider nicht, da ich aus der inneren Schleife nicht mehr rauskomme....
bei den Fragezeichen weiß ich nicht bis wohin ich die 2. schleife laufen lassen muss...
Dim strVariable As String
Dim cboDicke As String
Dim cboFarbe As String
Dim lngLZ As Long
Dim lngJ As Long
lngLZ = Sheets("tabelle1").Cells(1048576, 1).End(xlUp).Row
lngJ = Sheets("tabelle3").Cells(1048576, 1).End(xlUp).Row + 1
cboDicke = ComboBox1.Value
cboFarbe = ComboBox2.Value
For i = 1 To lngLZ
If optR1HL1 = True And optR7HL1 = True Then
Sheets("Tabelle1").Select
If Cells(i, 2) = cboDicke And Cells(i, 3) = cboFarbe And Cells(i, 4) Like "*HL 1*" And Cells(i, 5) Like "*HL 1*" _
Then
Sheets("Tabelle1").Range("A" & i, "H" & i).Copy
For j = 2 to ?
Sheets("Tabelle3").Cells(j, 1).PasteSpecial Paste:=xlPasteAll
Next
End If
End If
Next

Anzeige
AW: VBA Schleifen
06.02.2016 15:45:15
Daniel
Hi
nicht so kompliziert denken:
j = 1
For i = 1 to lngLZ
IF ... Then
Sheets("Tabelle1").Range("A" & i, "H" & i).Copy
Sheets("Tabelle3").Cells(j, 1).PasteSpecial Paste:=xlPasteAll
j = j + 1
End If
Next

Gruß Daniel

AW: VBA Schleifen - erledigt
06.02.2016 15:50:26
Kathleen
hmmm..
stimmt so geht's auch.
Vielen Dank...

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige