Hallo, ich habe eine Tabelle mit einem großen Buchbestand. In dieser Tabelle kann ich auch erfolgreich nach einem Buchtitel suchen. Jetzt möchte ich aber den Suchbereich von Spalte 2 auf alle Spalten ausdehnen. Wie muss ich die Prozedur EintragSuchen (im Modul1) verändern? Sicher ist es für erfahrene Excel-Anwender kein Problem, aber ich scheitere mit meinen rudimentären Kenntnissen an dieser Aufgabe.
Beispiel1.xlsm (Größe: 96,75 KB / Downloads: 6)
du möchtest also nicht nur nach dem Buchtitel suchen? Die Suchefunktion, die du da verwendest ist sicher nicht optimal, das würde ich mit der Find-Methode machen, da lässt sich das einfacher lösen.
Viele Grüße Klaus-Dieter Der Erfolg hat viele Väter, der Misserfolg ist ein Waisenkind Richard Cobden
Public Sub EintragSuchen(form As UserForm) '--------------------- 'Nach Einträgen suchen '--------------------- 'Das zugehörige Tabellenblatt aktivieren ThisWorkbook.Worksheets("Bücher").Activate 'ComboBoxTreffer zu Beginn leeren form.ComboBoxTreffer.Clear 'Variablen definieren Dim i As Integer 'Startzeile Dim zelleneintrag As String 'Wert, der in der Tabelle steht Dim eingabe As String 'Suchbegriff, der in der TextBoxSuchen eingetragen wird Dim c As Range Dim firstAddress As String 'Werte zuweisen i = 4 'erste Zeile mit Einträgen in der Tabelle zelleneintrag = StrConv(Cells(i, 2).Value, vbUpperCase) 'dert Eintrag in der Tabelle, mit StrConv und vbUpperCase in Großbuchstaben umgewandelt eingabe = StrConv(form.TextBoxSuchen, vbUpperCase) 'der mit StrConv und vbUppercase umgewandelte Suchbegriff 'Zeichenketten vergleichen
With Tabelle1.Range("A4:M25") ' Suchbreich definieren Set c = .Find(eingabe, LookIn:=xlValues) ' Suchbegriff zuweisen If Not c Is Nothing Then ' wenn Treffer, dann ... firstAddress = c.Address ' Adresse des Treffers in Variable übernehmen Do form.ComboBoxTreffer.AddItem Cells(c.Row, c.Column).Value ' Treffer in Combibox schreiben Set c = .FindNext(c) Loop While Not c Is Nothing And c.Address <> firstAddress End If End With 'ersten Treffer aller Suchergebniss in der ComboBoxTreffer anzeigen If form.ComboBoxTreffer.ListCount <> 0 Then form.ComboBoxTreffer.ListIndex = 0 End If End Sub
Viele Grüße Klaus-Dieter Der Erfolg hat viele Väter, der Misserfolg ist ein Waisenkind Richard Cobden
Hallo Klaus-Dieter, vielen Dank für den Tip und vor allen Dingen für die Implementierung. Das läuft hervorragend. Jetzt muss ich nur noch die Übernahme in die zugehörige UserForm bearbeiten. Sollte ich daran scheitern, was ich nicht hoffe, dann melde ich mich wieder.
Hallo Klaus-Dieter, vielen Dank für deine elegante Lösung meines Problems. Ich habe zwischenzeitlich auch eine Lösung gefunden, die einem Profi bestimmt die Haare zu Berge stehen lässt. Einfach geändert in der Zeile form.ComboBoxTreffer.AddItem Cells(c.Row, 2).Value ' Treffer in Combobox schreiben Das c.column durch die 2 ersetzt, widerspricht wahrscheinlich allen Regeln, funktioniert aber.
Zitat:Das c.column durch die 2 ersetzt, widerspricht wahrscheinlich allen Regeln, funktioniert aber.
deine Anfrage hatte ich dahingehend verstanden, dass du die Suche auf weitere Spalten ausdehnen wolltest. Deshalb hatte ich c.Column eingebaut. So wie es jetzt ist, werden nur die Treffer in Spalte 2 (B) eingetragen.
Viele Grüße Klaus-Dieter Der Erfolg hat viele Väter, der Misserfolg ist ein Waisenkind Richard Cobden
gerade erst ist mir aufgefallen, dass sich deine Antwort auf meinen ersten Lösungsvorschlag bezieht. Sie dir mal die Datei an, da habe ich das anders gelöst.
Viele Grüße Klaus-Dieter Der Erfolg hat viele Väter, der Misserfolg ist ein Waisenkind Richard Cobden
13.06.2024, 11:56 (Dieser Beitrag wurde zuletzt bearbeitet: 13.06.2024, 11:58 von klaus45.)
Hallo Klaus-Dieter, ich muss das wohl besser erklären. In der ursprünglichen Form der Sub wurde nur in der Spalte "Titel" der Tabelle gesucht und alle Treffer im TextFeldTreffer ausgegeben. Gleichzeitig wurden alle Inhalte der Spalten in den entsprechenden Feldern der UF angezeigt. Häufig wird aber auch nach einem Autor oder einer anderen Information gesucht, deshalb wollte ich ja die Ausweitung des Suchbereiches. Mit deiner 1.Variante wurde im TextFeldTreffer der Inhalt der Zelle angezeigt wo der Treffer lag, in der UF wurde sonst nichts angezeigt. Mit der Änderung von c.column auf 2 wurde dort aber wieder der Titel des Buches angezeigt und alle anderen Werte in den Feldern der UF. Das habe ich wirklich nur nach "try and error" gemacht und es hat ja auch geklappt. Deine Lösungen sind eben die eines Profis und nicht die eines "Sonntagsfahrers" auf diesem Gebiet. Nochmals vielen Dank für deine Hilfe.
Viele Grüße Klaus Es läuft mit der letzten Variante von dir alles wunderbar. Der buchbestand liegt so etwa bei 2000 Büchern. Deshalb habe ich das überhaupt nur gemacht.
13.06.2024, 12:54 (Dieser Beitrag wurde zuletzt bearbeitet: 13.06.2024, 12:55 von Klaus-Dieter.)
Hallo Klaus,
das hatte ich schon so verstanden. Mein erster Vorschlag war nur ein Schnellschuss, den ich dann im Anschluss optimiert habe. Die Auswertung für die Datenübernahme musste komplett neu angelegt werden, (wie du sicher im Quelltext gesehen hast).
Übrigens: ein Profi bin ich nicht, sonst hättest du von mir eine Rechnung bekommen.
Viele Grüße Klaus-Dieter Der Erfolg hat viele Väter, der Misserfolg ist ein Waisenkind Richard Cobden