Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
532to536
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
532to536
532to536
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Suchfunktion

Suchfunktion
14.12.2004 22:27:53
Markus
Hallo,
ich bräuchte bitte eine Hilfestellung.
Problem: Ich habe eine Excel-Tabelle mit aktiviertem Filter. Damit ich beim Filtern das Dropdown-menu nicht verwenden muss, habe ich mit dem Steuerelement-Toolbox ein Textfenster plaziert und folgende VBA-Anweisung ergänzt:

Private Sub TextBox2_Change()
Selection.AutoFilter Field:=6, Criteria1:="=" & Me.TextBox2 & "*", Operator:=xlAnd
End Sub

So kann ich direkt in dem Fenster meinen Suchbegriff eingeben und es wird sofort nach diesem Begriff gefiltert.
FRAGE: Bei der VBA-Anweisung wird nur im Feld 6 sprich Spalte F gefiltert.
Wie könnte ich den Filter auch auf andere Spalten ausweiten so das mit ein und demselben Suchfenster 5 od. 10 Spalten durchsucht bzw. gefiltert werden.
WARUM: Ich habe eine Artikelliste mit 10 Suchkriterien erweitert.
Z.Bsp. Schrittmotor, HLSM, 4018, 24VDV, Nanotec usw. Ich möchte mit nur bei einem Suchfenster einen x-beliebigen Suchbegriff eingeben und wenn dieser spezielle Beriff in einem dieser Spalten vorhanden ist, die ganze Zeile angezeigt bekommen.
Vielleicht kann mir einer dabei Helfen.
Vielen Dank im Voraus.
Gruß Markus

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Das ist unlogisch...
Boris
Hi Markus,
...wenn wenn du z.B. erst nach Spalte A filterst, dann werden DIE Zeilen ja ausgeblendet, in denen in Spalte A dein Suchbegriff NICHT vorkommt - ungeachtet dessen, ob dieserSuchbegriff möglicherweise in einer anderen Spalte in dieser Zeile existiert.
Ergo: Der Autofilter erscheint mir hier höchst unpässlich. Da wäre eine Suchroutine - z.B. mit der Find-Methode - wesentlich besser.
Lad doch mal ne kleine Beispieltabelle hoch.
Grüße Boris
AW: Suchfunktion
14.12.2004 23:40:12
Markus
Hallo Boris,
ich habe die Tabelle in der Firma, in welcher ich arbeite.
Hättest du nicht vielleicht ein Beispiel?
Suche in Spalte A, B, C, D, E, F
Eine Tabelle mit gleichem Suchfenster habe ich hochgeladen.
Also, im Suchfenster Artikel-Suchbegriff Wort eingeben und die oben angeführten
Spalten durchsuchen lassen.
Im Voraus Danke.
Gruß Markus
Anzeige
Nix da...
Boris
Hi Markus,
Eine Tabelle mit gleichem Suchfenster habe ich hochgeladen.
Hat nicht geklappt...
Grüße Boris
Die Spalten B bis H sind leer...
Boris
Hi Markus,
...was soll mir das sagen? Was steht denn da normalerweise drin?
Grüße Boris
AW: Die Spalten B bis H sind leer...
Markus
Sorry,
die Tabelle war der erste Anfangs-Entwurf. Die erweiterte Version ist wie gesagt
in der Firma.
Vielleicht kannst du bitte vorab nur die VBA-Anweisung erstellen, welche die Spalten B-H durchsucht. Wenn er dann den entsprechenden Begriff gefunden hat, soll nur diese oder jene Zeilen wo der Begriff enthalten ist anzeigen. Zum Testen kann man ja irgendwelche Begriffe eingeben.
Bitte Danke
Gruß Markus
Anzeige
Hier ein kleiner Suchcode...
Boris
Hi Markus,
lege zusätzlich ein Tabellenblatt mit dem Namen "Ergebnis" an.
Zudem einen Button, der folgenden Code aufruft:
Option Explicit
Sub suchbegriff()
Dim var As Variant, C As Range, fA As String, lRow As Long
Dim wsQuell As Worksheet, wsZiel As Worksheet
Set wsQuell = Worksheets("Tabelle3")
Set wsZiel = Worksheets("Ergebnis")
var = Application.InputBox("Suchbegriff:", "Wonach soll gesucht werden?")
If var = False Then Exit Sub
lRow = 1
With wsQuell
Set C = .Cells.Find(var, lookat:=xlPart)
If Not C Is Nothing Then
Worksheets("Ergebnis").Cells.Clear
fA = C.Address
Do
wsZiel.Rows(lRow) = .Rows(C.Row).Value
lRow = lRow + 1
Set C = Cells.FindNext(Cells(C.Row, 256))
Loop While Not C Is Nothing And C.Address <> fA
Else
MsgBox "Nix gefunden...", "Gebe bekannt..."
End If
End With
End Sub

Die Ergebnisse stehen dann in dem Ergebnisblatt.
Grüße Boris
Anzeige
Da fehlen eigentlich noch zwei Punkte...
Boris
Hi Markus,
...aber es scheint auch ohne zu gehen - bzw. es geht dann ohne, wenn der Code aus dem Blatt "Tabelle3" aufgerufen wird.
Dennoch hier nochmals ganz sauber:
Option Explicit
Sub suchbegriff()
Dim var As Variant, C As Range, fA As String, lRow As Long
Dim wsQuell As Worksheet, wsZiel As Worksheet
Set wsQuell = Worksheets("Tabelle3")
Set wsZiel = Worksheets("Ergebnis")
var = Application.InputBox("Suchbegriff:", "Wonach soll gesucht werden?")
If var = False Then Exit Sub
lRow = 1
With wsQuell
Set C = .Cells.Find(var, lookat:=xlPart)
If Not C Is Nothing Then
Worksheets("Ergebnis").Cells.Clear
fA = C.Address
Do
wsZiel.Rows(lRow) = .Rows(C.Row).Value
lRow = lRow + 1
Set C = .Cells.FindNext(.Cells(C.Row, 256))
Loop While Not C Is Nothing And C.Address <> fA
Else
MsgBox "Nix gefunden...", "Gebe bekannt..."
End If
End With
End Sub

Boris
Anzeige
AW: Da fehlen eigentlich noch zwei Punkte...
15.12.2004 23:25:30
Markus
Hallo Boris,
vielen Dank.
Eine tolle Lösung. Gefällt mir ganz gut.
Dürfte ich dich in Zukunft manchmal um deine Hilfe bitten.
Kann ich auch deine E-Mail Adresse erfahren oder ist dir der
Kontakt über das Forum lieber.
Also, nochmals danke für die Hilfe.
Gruß Markus
AW: Da fehlen eigentlich noch zwei Punkte...
Boris
Hi Markus,
freut mich, wenn´s klappt.
Aber stell deine Fragen auch künftig einfach hier im Forum - hier sind so viele gute Helfer unterwegs, dass dir nahezu jede Frage beantwortet wird.
Grüße Boris
http://www.excelformeln.de

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige