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

Problem mit Schleife

Problem mit Schleife
16.07.2008 10:42:00
Melanie
Hallo Excel-Profis,
ich habe folgenden Genialen String hier im Forum mal erhalten.
Dim arrKD
Dim KD
Range("D1:D" & iRow2).AdvancedFilter xlFilterCopy, , Range("iv1").Cells, True
Range("iv1").Delete shift:=xlUp
arrKD = Range("iv1").CurrentRegion
Range("iv1").EntireColumn.Delete
Was ich dann hinzufüge ist folgendes:
For Each KD In arrKD
Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.AutoFilter
Selection.AutoFilter Field:=4, Criteria1:=KD
Range("A1").Select
Selection.CurrentRegion.Select
Selection.Copy
Sheets("Detailansicht_Rec").Select
If Range("A1").Value = "" Then
Range("A1").Select
ActiveSheet.Paste
Else: Range("A65536").End(xlUp).Offset(3, 0).Select
ActiveSheet.Paste
End If
Sheets("Hilfstabelle").Select
ActiveSheet.AutoFilterMode = False
Next
End If
Es werden also aus einer Liste alle Einträge ausgelesen und jeder Listeneintrag wird dann gefiltert und es werden einige Operationen durchgeführt.
Das Problem ist jetzt, dass mir das ganze auf einen Fehler läuft, wenn nur ein Eintrag in der Liste vorkommt. Was muss ich hier tun?
Ich hoffe, es ist klar geworden, was ich meine...
Danke für Eure Hilfe im Voraus!!
Grüße,
Melanie

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Problem mit Schleife
16.07.2008 12:08:00
Erich
Hallo Melanie,
eine Beispielmappe wäre gut gewesen.
Gut wäre auch gewesen, hättest du angegeben, in welcher Codezeile der Fehler auftritt
und wie Fehlernummer und -hinweis lauten.
Dein Code läuft bei mir ohne Fehler durch, auch wenn nach dem Filtern nur eine Zeile in der Liste steht.
Hier der Code etwas kürzer und sicher schneller:

Option Explicit      ' immer zu empfehlen!
Sub a()
Dim arrKD
Dim KD
Dim iRow2 As Long, lngZ As Long
iRow2 = 6            ' oder was auch immer
Sheets("Hilfstabelle").Select  ' wenn nicht schon aktiv
arrKD = Range("D2:D" & iRow2)
Range(Range("A1"), Range("A1").End(xlToRight)).AutoFilter
For Each KD In arrKD
Selection.AutoFilter Field:=4, Criteria1:=KD
With Sheets("Detailansicht_Rec")
lngZ = IIf(IsEmpty(.Range("A1")), 1, _
.Cells(Rows.Count, 1).End(xlUp).Row + 3)
Range("A1").CurrentRegion.Copy .Cells(lngZ, 1)
End With
Next
ActiveSheet.AutoFilterMode = False
Application.CutCopyMode = False
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Problem mit Schleife
16.07.2008 14:19:00
Melanie
Hallo Erich,
Danke für Deine Hilfe. Bin leider erst jetzt dazu gekommen den String zu testen. Das Problem mit der Testdatei ist, dass ich von meinem Arbeitgeber aus keine Daten ins Netz stellen darf...
Was mein String eigentlich machen soll ist alle Kundennummern (in Spalte D), die vorkommen nacheinander zu filtern und das jeweilige Filterergebnis in ein anderes Tabellenblatt zu kopieren. Das Problem tritt nun nicht auf, wenn nur eine Zeile gefiltert wi9rd, sindern, wenn nur eine Kundennummer in Spalte D vorkommt.
Der Fehler ist Nr. 13, Typen unverträglich. Ich hoffe, das hilft...
Danke auf jeden Fall im Voraus!
Grüße,
Melanie

Anzeige
AW: Problem mit Schleife
16.07.2008 14:52:42
Rudi
Hallo,
wenn es nur eine KdNr gibt wird arrKd kein Array und kann somit auch nicht mit For each KD in arrKd durchlaufen werden.

Sub xx()
Dim arrKD
Dim KD
Range("D1:D" & iRow2).AdvancedFilter xlFilterCopy, , Range("iv1").Cells, True
Range("iv1").Delete shift:=xlUp
arrKD = Range("iv1").CurrentRegion
Range("iv1").EntireColumn.Delete
If IsArray(arrKD) Then
For Each KD In arrKD
With Sheets("Hilfstabelle")
.AutoFilterMode = False
.Range(.Range("A1"), .Range("A1").End(xlToRight)).AutoFilter Field:=4, Criteria1:=KD
.Range("A1").CurrentRegion.Copy
End With
With Sheets("Detailansicht_Rec")
If .Range("A1").Value = "" Then
.Range("A1").Paste
Else
.Range("A65536").End(xlUp).Offset(3, 0).Paste
End If
End With
Next
Else
With Sheets("Hilfstabelle")
.AutoFilterMode = False
.Range(.Range("A1"), .Range("A1").End(xlToRight)).AutoFilter Field:=4, Criteria1:=KD
.Range("A1").CurrentRegion.Copy
End With
With Sheets("Detailansicht_Rec")
If .Range("A1").Value = "" Then
.Range("A1").Paste
Else
.Range("A65536").End(xlUp).Offset(3, 0).Paste
End If
End With
End If
End Sub


Gruß
Rudi

Anzeige
AW: Problem mit Schleife
16.07.2008 16:22:00
Melanie
Hallo Rudi,
vielen Dank für Deine Hilfe!!
Grüße,
Melanie

AW: Problem mit Schleife
16.07.2008 17:00:00
Erich
Hi Melanie,
dieses Problem tritt überhaupt nicht auf, wenn du einfach alle Zeilen in Spalte D durchläufst,
ohne Array und "For Each".
Probier mal:

Sub a()
Dim iRow2 As Long, lngQ As Long, lngZ As Long
Sheets("Hilfstabelle").Select                ' wenn nicht schon aktiv
iRow2 = Cells(Rows.Count, 4).End(xlUp).Row      ' oder was auch immer
Range(Range("A1"), Range("A1").End(xlToRight)).AutoFilter
For lngQ = 2 To iRow2
Selection.AutoFilter Field:=4, Criteria1:=Cells(lngQ, 4)
With Sheets("Detailansicht_Rec")  ' evtl. jeweils ain anderes Sheet?
lngZ = IIf(IsEmpty(.Range("A1")), 1, _
.Cells(Rows.Count, 1).End(xlUp).Row + 3)
Range("A1").CurrentRegion.Copy .Cells(lngZ, 1)
End With
Next
ActiveSheet.AutoFilterMode = False
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige