Zum Inhalt springen

Excel VBA Suchfunktion


jim84

Empfohlene Beiträge

Hallo,

ich versuche mich gerade in vba excel und weiß nicht weiter.

und zwar hab ich 3 von einander abhängige comboboxen ,

sprich ich muss in der ersten was auswählen, und kann dann erst in der zweiten box eine spezifischere auswahlt treffen usw..

und wenn ich in allen comboboxen was ausgewählt habe soll das program nach diesen begriffen suchen.

sprich ich geb in der ersten box an ob ich männlich oder weiblich bin.

in der zweiten meine größe und in der dritten t-shirt, hose oder bla

und jetz soll das program aus zB einer excel tabelle alle passenden kleidungsstücke raussuchen.

ist sowas möglich?

wenn ich nur nach einer sache suche zB t-shirt kann ich ja eine globale suche machen und mir alles ausgeben lassen was den begriff t-shirt beinhaltet.

aber bei mehren sachen über comboboxen weiß ich nicht weiter

gruß jim

Link zu diesem Kommentar
Auf anderen Seiten teilen

Für sowas würd ich bei gott keine Excel tabelle benutzen, das schreit förmlich nach ner richtigen Datenbank.

Du kannst wenn du dir das antun willst auch ne excel tabelle benutzen, ja, machbar is das schon, aber ..... bah, mach sowas nich du.

Mit ner Datenbank wär das mit nem simplen Query gegessen die sache.

Aber um deine Frage zu beantworten :

wenn ich nur nach einer sache suche zB t-shirt kann ich ja eine globale suche machen und mir alles ausgeben lassen was den begriff t-shirt beinhaltet.

aber bei mehren sachen über comboboxen weiß ich nicht weiter

Du verbindest einfach die selektierten einträge deiner comboboxen, und baust dir daraus nen string, nach dem du suchst.

dim blablub as string = combobox1 & combobox2 & combobox3

aber wie gesagt, mach sowas nich mit excel, wirste nich glücklich mit

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hmmm wie könnte man denn das alternativ lösen?

sollte aber schon excel sein.

das mit den combobox1 & comboxbox2 klappt leider nicht

Private Sub CommandButton2_Click()

Dim blatt As Worksheet

Dim zelle As Range

Dim suchstring As String

suchstring = ComboBox1 & ComboBox2

For Each blatt In ActiveWorkbook.Worksheets

For Each zelle In blatt.UsedRange.Cells

If Not (IsError(Application.Find(LCase(suchstring), LCase(zelle.Text)))) Then

blatt.Select

zelle.Select

Aerodynamik.Frame1.Caption = zelle.Text

End If

Next zelle

Next blatt

MsgBox "suche beendet"

End Sub

bis jetz markiert er nur die gefundenen einträge, wie bekomme ich die denn in eine listbox oder besser in so ein scrollbalken

und eine frage noch.. wie bekomme ich ihn dazu das er nur auf eine bestimmte seite such nicht auf alles seiten

Link zu diesem Kommentar
Auf anderen Seiten teilen

hi jim84,

also wenn du etwas in eine listbox hineinbringen möchstest machst du das am besten so:

UserForm1.ListBox1.AddItem(zelle)
um nur auf einem blatt zu suchen solltest du einfach die For Schleife entfernen, welche alle Arbeitsblätter durchgeht. ich persönlich würde das was du vorhast so hier lösen: 1. Würde ich meine Sheets so einrichten, dass man z.B. ein Sheet "hosen" und ein Sheet "t-shirts" und was man auch immer noch haben möchte hat. Außerdem schreibe ich in die erste Zelle(also die A-Spalte) den namen der hose oder des t-shirts, z.b. Levy-Jeans blau, in die B-Spalte, schreibe ich dann männlich oder weiblich und in die C-Spalte die größen 2. wenn alle comboboxen ausgefüllt sind und man auf den suchen button klickt, würde ich mit
Sheets(UserForm1.ComboBox_klamotte).Select
in das entsprechende Arbeitsblatt wechseln (in der ComboBox_klamotte, wählt man natürlich aus was man haben möchte) danach führe ich die folgende suchfunktion aus:
Cells.Find(What:="männlich", After:=ActiveCell, LookIn:=xlFormulas, LookAt _

        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _

        False, SearchFormat:=False).Activate
dann prüfst du ob in der(oder den zellen, je nachdem wie man die größen eingibt) zelle, rechts neben der aktiven zelle, die gewünscht größe steht, wenn ja kannst du:
UserForm1.ListBox1.AddItem(Activecell.Offset(0,-1).Value)
machen, wenn nein, dann suchst du mit
Cells.FindNext(After:=ActiveCell).Activate

nach dem nächsten treffer.

Hoffe das hilft dir weiter

mfg

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...