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

Stückliste mit Find.Methode

Stückliste mit Find.Methode
16.05.2023 17:22:43
Frank

Hallo Ihr VBA Gurus

ich bin noch ziemlich neu in dem Thema. Da stehe ich schon vor einem Problem.
Ich habe eine Stückliste in der ich in der Spalte H nach "Schweißbaugruppe" suche. Dieser kann auch öfters vorkommen.
Wenn ich den Namen gefunden habe möchte ich gerne den Stufenbereich z.B. 1.3.2 bis 1.3.2.14 in ein anders Tabellenblatt kopieren. Danach dann in einer Schleife zum Wert "Schweißbaugruppe" und diesen auch wieder kopiert und im nächsten Tabellenblatt ans Ende anfügt
ich tuhe mir schwer mit der zweiten Range. Was halt sein kann das nicht immer erst ab der dritten Stufe der Wert in Spalte H gleich ist.
Es wäre schön wenn der Stufenbereich variabel ist (z.B. 2.2 -2.2.10 oder 9.4.1.11-9.4.1.11.4)
Was noch das i Tüpfelchen wäre das der Range sich nur auf die nächte Stufe bezieht.
Schon mal vielen Dank euch Profis

Gruß Frank

Ps hier die Testdatei https://www.herber.de/bbs/user/159222.xlsx

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Stückliste mit Find.Methode
16.05.2023 19:11:13
ralf_b
Wo ist denn deine find Methode?

Deine Beschreibung bringt jetzt nicht wirklich Klarheit.
Verstanden habe ich:
1. suche Schweißbaugruppe und kopiere Stufenbereich 1.3.2 bis 1.3.2.14 wo anders hin.
2. suche nächste Schweißbaugruppe

Soooo, in dem benannten Stufenbereich bis 14 befinden sich aber noch weitere Zellen mit "Schweißbaugruppe"
Woher soll vba wissen das bei 14 der erste Bereich endet? Denkbar wäre das er nur bis zur Zeile über der nächsten "Schweißbaugruppe" gehen würde.
Das lese ich aber so nicht aus deiner Beschreibung.

Grundsätzlich gut zu wissen für Anfänger ist, das man nicht mitten im Thema anfangen sollte. In Folge dessen verständlicherweise nicht weiter zu wissen und um Hilfe zu rufen ist zwar nachvollziehbar aber so ganz ohne Vorleistung deinerseits, eine Frechheit.



Anzeige
AW: Stückliste mit Find.Methode
17.05.2023 07:44:33
Frank
Guten Morgen Ralf,
sorry... aller Anfang ist schwer...
Ich habe in einer anderen Version nach dem Begriff "Schweißbaugruppe" in der Spalte suchen lassen und mir nur die bestimmte Auswahl kopiert.
Ich habe die Tabelle in eine Pivot Tabelle umgewandelt und dann nach dem Begriff suchen lassen.

hier der Teilausschnitt vom VBA Code der Pivottabelle

Ws.Activate
            If [H:H].Find("Schweißbaugruppe", , , xlWhole) Is Nothing Then GoTo Kunststoff 'Sprung Kunststoff
            
            With f
                For Each pItem In .PivotItems
                    Select Case pItem.Name
                    Case Is = "Schweißbaugruppe"
                    pItem.Visible = True
                    Case Else
                    pItem.Visible = False
                    End Select
                Next
            End With
               
                Range("B2:L" & Cells(Rows.Count, 1).End(xlUp).Row - 1).Copy
                Sheets("Schweiss BG").Range("B3").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                    :=False, Transpose:=False
            
            Application.CutCopyMode = False
            p.ClearAllFilters
Da aber in der Pivot Tabelle die Stufen entfallen muss ich hier noch einen anderen Weg gehen.
Ich nehme die vorhandene Tabelle und lasse eine neue Suche ausführen.
Wenn er den Begriff „Schweißbaugruppe" gefunden habe. Soll die Suche auf dem Wert aus der ersten Zelle in der Zeile mit dem Begriff erstelle „Schweißbaugruppe" wechseln. Und dann den Teilbereich (...lookat:=xlPart...) suchen (z.B. 1.3.2* ). Damit findet VBA doch alles, was in der Spalte A mit z.B. 1.3.2... beginnt. Und dann den Bereich in ein anderes Blatt kopiere.
Danach soll nach dem nächsten Begriff „Schweißbaugruppe" gesucht werden und dann wieder nach dem Teilbereich gesucht werden.

So etwa:

With Tabelle1
ZeileMax = .UsedRange.Rows.Count

For Zeile = 3 To ZeileMax
If .Cells(Zeile, 8).Value = "Schweißbaugruppe" Then
                strSuchbegriff = Cells(0, -7)_
                Set rng = Sheets("Tabelle1").Columns(1).Find(What:=strSuchbegriff, LookIn:=xlValues, lookat:= _
                xlPart)
und dann mit einer Schleife nach der nächsten Schweißbaugruppe suche.

Geht das eigentlich mit der Suche in der Suche wenn der Suchgebriff sich ändert? oder liegt hier der Fehler
Und kann der zweite Suchbegriff in der Schleife variabel sein?

Viele Grüße
Frank


Anzeige
AW: Stückliste mit Find.Methode
17.05.2023 11:44:42
ralf_b
find findet nur den nächsten oder den vorherigen passenden Eintrag, je nachdem wie du die Parameter einstellst.
in Kombination mit findnext(suchbegriff) und einer Schleife (Siehe Onlinehilfe zu Range.find) kannst du alle Vorkommen des Suchwertes im Suchbereich finden.
Find geht solange durch den Bereich bis du die Schleife abbrichst. Es macht also unendliche Durchläufe durch den Suchbereich.

zwei Schleifen mit find halte ich für zu unübersichtlich.
eine For-next schleife dürfte es auch lösen, indem du abwechselnd die Zellen vergleichst. Erst bis Schweissbaugruppe, dann die Stufen, dann wieder die Schweissbaugruppe usw..
Man muß sich nur die jeweiligen Wechsel merken und daraus die zu kopierenden Bereiche zusammenbasteln.


Anzeige
AW: Stückliste mit Find.Methode
17.05.2023 17:00:03
Yal
Hallo Frank,

ich würde nicht mit der Suche arbeiten, sondern mit der Filterung. Du hast ja eine Tabelle im Hintergrund (diese müsste übrigens um einige Spalten erweitert werden).

Filtern, angezeigte Zeile kopieren, das gesamt unter laufenden Makrorekorder. Dann Code anschauen und damit ausprobieren.

VG
Yal

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige