Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1488to1492
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

Mehrfachselektion

Mehrfachselektion
18.04.2016 13:12:47
Oisse
Hallo Zusammen,
mir stellt sich folgendes Problem:
In der Artikelliste ist in Spalte x eine Vorgangsnummer.
Nun möchte ich, dass alle Zeilen in denen nach einer bestimmten Vorgangsnummer gesucht wird (per Inputbox) selektiert werden.
Denn aus den selektierten Zeilen werden später Daten ausgelesen.
Folgenden (falschen) Code habe ich bisher.
Könnte mal jemand drüber schauen bitte?
Private Sub OptionButton5_Click()
Dim wsSearch    As Worksheet
Dim c           As Range
Dim wsTarget    As Worksheet
Dim strFind     As String
Dim firstAddress As String
Dim arrFiles    As Variant
Dim arrSheets   As Variant
Dim i           As Integer
Dim int_Counter As Integer
Dim int_Column  As Integer
strFind = InputBox("Bitte Vorgangsnummer eingeben", "Vorgangsnummer")
Tbl2 = "Artikel" 'Tabellenblatt aus dem die Daten geholt werden sollen
arrFiles = Array(ThisWorkbook.Path & "\Vorlagen\Angebote.xlsm")
'Namen der Sheets in der entsprechenden Reihenfolge der oben angeführten Dateien
arrSheets = Array(Tbl2)
'Screenflicker unterdrücken
Application.ScreenUpdating = False
Application.DisplayAlerts = False
'Alle Dateien im Array verarbeiten
For i = 0 To UBound(arrFiles)
'Mappe öffnen
Set wsSearch = ThisWorkbook.Sheets(Tbl2)
'Suche in der Mappe in Spalte B (Wert der Zelle muss in diesem Fall komplett ü _
bereinstimmen, wenn das nicht gewünscht ist LookAt:= auf xlPart ändern)
With wsSearch.Range("X:B")
Set c = .Find(strFind, LookIn:=xlValues, LookAt:=xlPart)
If Not c Is Nothing Then
firstAddress = c.Address
Range(c).EntireRow.Select
Do
Union(Selection, Range(c), Range(c).End(xlDown)).Select
'Finde den nächsten passenden Eintrag
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address  firstAddress
End If
End With
' schließe die Mappe
'wsSearch.Parent.Close False
Next
Application.DisplayAlerts = True
Application.ScreenUpdating = True

Danke

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

Betreff
Datum
Anwender
Anzeige
AW: Mehrfachselektion
18.04.2016 19:53:37
Piet
Hallo Oisse,
ich habe den Code nicht verstanden, habe bisher nie mit Union gearbeitet.
Aber warum bitte - doppelt moppeln - ?
Die echten Profis arbeiten nicht gerne mit Select, es wird tunlichst vermieden.
Warum erst Bereiche selektieren, wenn man die Daten direkt auslesen kann?
Es dürfte viel einfach sein sie direkt in ein anderes Blatt zu kopieren.
mfg Piet

AW: Mehrfachselektion
18.04.2016 21:36:24
Oisse
Hallo Piet,
und danke für deine Antwort.
Na ja, ich kenne mich mit den codes auch nicht wirklich aus. Ich stelle sie mir halt mit diversen Codeschnipseln zusammen und irgendwie klappt das dann auch oder jemand z.b. hier im Forum korrigiert, erstellt oder ändert entsprechend, was ich super toll finde.
Bei meinem Problem ist es eben so, dass ich bisher die Zeilen, aus denen ich die Daten holen will, manuell selektiert habe.
Hat bisher auch tadellos funktioniert. Nun ist die Aufgabenstellung aber eine andere.
Jetzt sollen bei den einzelnen Artikeln (Zeilen) Auftragsnummern vergeben sollen.
Nun kann es natürlich vorkommen, dass für mehrere Artikel die gleiche Auftragsnummer vergeben wird.
Also z.B. erhält die Zeile 2 die Auftragsnummer 4, die Zeile 5 erhält die Auftragsnummer 4 und auch die Zeile 12 erhält die Auftragsnummer 4.
Nun möchte ich eben anhand der Inputbox, wenn ich die Zahl 4 eingebe, die Zeilen selektieren (das, was ich vorher per Hand gemacht habe) und den folgenden Ablauf, nämlich das Auslesen der einzelnen Daten, wie gewohnt per bereits fertigen Code ablaufen lassen.
Vielleicht ist das sehr umständlich aber wie bitte soll/kann es anders funktionieren?
L.G

Anzeige
AW: Mehrfachselektion
18.04.2016 22:01:45
Oisse
Ich habe nun nochmal ein bisschen rumprobiert und ich denke, der Teil auf den es ankommt ist der hier:

strFind = InputBox("Bitte Vorgangsnummer eingeben", "Vorgangsnummer")
Tbl2 = "Artikel" 'Tabellenblatt aus dem die Daten geholt werden sollen
Set wsSearch = ThisWorkbook.Sheets(Tbl2)
'Suche in der Mappe in Spalte W
With wsSearch.Range("W:W")
Set c = .Find(strFind, LookIn:=xlValues, LookAt:=xlWhole)
If Not c Is Nothing Then
firstAddress = c.Address
Range(c.Address).Select
Do
Union(Selection, Range(c.Address)).Select
'Finde den nächsten passenden Eintrag
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address  firstAddress
End If
End With
Momentan sieht es so aus, als würde alle so funktionieren.
Wie gesagt, ich stopsle nur so zusammen.
Gruß
Oisse

Anzeige
AW: Mehrfachselektion
19.04.2016 20:40:04
Piet
Hallo Oisse
sorry, vielleicht nerve ich dich, aber mir ist das Selektieren nicht wichtig.
Profis vermeiden es tunlichst. Du hast im Makro sehr schöne Set Anweisungen.
Damit vermeidest du jedes Selektieren. Aber danach wird mit Union Selektiert.
Mich interessiert: wo notierst du die gefundenen Daten? In welches Blatt, welche Spalte, Zeile?
Das kann man direkt beim Suchen erledigen. Wenn du mir dazu Angaben machst kann man das
vorliegende Makro entsprechend aendern. Du sagst ja selbst das es lauter "Schnippsel" sind.
Andere Frage, kannst du eine Beispieldatei mit anonymen Daten erstellen?
Wenn ich die Datei sehe habe ich vielleicht Ideen wie man sie optimieren kann.
Hast du mal daran gedacht Daten zu Sortieren und sie wieder zurück sortieren?
Oder den AutoFilter zu benutzen um nur bestimmte Daten gezielt auszuwaehlen?
mfg Piet
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige