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

Find Methode was ist zu beachten?

Find Methode was ist zu beachten?
01.04.2018 02:55:31
Mr.T
Guten Morgen zusammen,
ich habe eine Frage was die find Methode betrifft.
Und zwar habe ich eine Userform mit mehreren Comboboxen und Textboxen.
Die Einträge der Comboboxen werden aus einem separaten Tabellenblatt geholt und dann bei Auswahl direkt in die Textbox geschrieben.
Nun möchte ich es so machen, dass wenn ich die erste Textbox mit einem Auswahltext fülle, dass Excel in dem Moment in dem Quellenblatt nach den Texten sucht die in der gleiche Zeile wie der ausgewählte Text stehen, eben in entsprechenden Spalten. Werden die Werte gefunden, sollen sie direkt in die folgenden Textboxen transportiert werden.
Kurz gesagt soll entsprechend der Vorauswahl für die erste Textbox die restlichen Textboxen mit den entsprechenden zugehörigen Texten gefüllt werden.
Mein Codebeispiel habe ich mal unten dazugeschrieben.
Vielleicht noch ein Hinweis: Die Texte sind teilweise länge, haben Leerzeilen und Teilweise am Anfang geschwungene Klammern z.B. so - {Abschn. Transport}Während des Transportes...
Ich habe schon versucht das Ganze mit einem ' am Anfang zu beheben oder an der Zellenformatierung in der zu überprüfenden Zelle, leider kein Erfolg.
Ein weiter Test hat gezeigt, dass wenn ich mal im Quellblatt die Texte durch kurze Wörter wie Hallo, Ja oder Nein ersetze funktioniert alles.
Hat jemand einen Rat?
Private Sub ComboBox1_Change()
TextBox2.Value = ComboBox1.Text
End Sub

Private Sub TextBox2_Change()
Dim WkSh As Worksheet
Dim rZelle As Range
Set WkSh = ThisWorkbook.Worksheets("Datenpool")
If TextBox2.Value "" Then
With WkSh.Columns(2)
Set rZelle = .Find(TextBox2.Value, LookAt:=xlWhole, LookIn:=xlValues)
If Not rZelle Is Nothing Then
TextBox3.Value = WkSh.Cells(rZelle.Row, 3).Value
TextBox40.Value = WkSh.Cells(rZelle.Row, 9).Value
TextBox41.Value = WkSh.Cells(rZelle.Row, 10).Value
TextBox42.Value = WkSh.Cells(rZelle.Row, 11).Value
End If
End With
End If
End Sub

Vielen Dank euch im Voraus!

21
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Find Methode was ist zu beachten?
01.04.2018 05:57:16
Werner
Hallo,
dann mit xlPart
Set rZelle = .Find(TextBox2.Value, LookAt:=xlPart, LookIn:=xlValues)
Gruß Werner
AW: Find Methode was ist zu beachten?
01.04.2018 07:57:04
Luschi
hallo Mr.T,
Du solltest auch diesen Hinweis aus der Vba-Hilfe beachten:

Die Einstellungen für LookIn, LookAt, SearchOrder und MatchByte werden gespeichert,
sobald Sie diese Methode verwenden.
Wenn Sie beim nächsten Aufruf der Methode keine Werte für diese Argumente angeben, werden die
gespeicherten Werte verwendet. Das Festlegen dieser Argumente ändert die Einstellungen im
Dialogfeld Suchen, und das Ändern der Einstellungen im Dialogfeld Suchen ändert die  _
gespeicherten
Werte, die verwendet werden, wenn Sie die Argumente auslassen.
Legen Sie diese Argumente zum Vermeiden von Problemen explizit fest, sobald Sie diese Methode verwenden.

Wichtige Hinweiose findest Du auch hier: https://excelmacromastery.com/excel-vba-find/
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Find Methode was ist zu beachten?
01.04.2018 13:54:58
Mr.T
Hallo und vielen Dank für Eure Antworten.
Leider führte xlpart nicht zum gewünschten Ergebnis.
Den Link von Luschi hatte ich im Vorfeld schon gelesen und verschiedene Einstellungen probiert...Leider ohne Erfolg.
Ich weiß nicht wo ich ansetzen soll bzw. was ich noch ausprobieren kann. Hat denn jemand eine Ahnung was die Ursache für das vorgenannte Problem sein kann?
Oder gibt es vllt. eine ganz andere Methode sowas zu lösen oder ausschließlich durch .find?
Viele Grüße und schöne Osterfeiertage.
AW: Find Methode was ist zu beachten?
01.04.2018 15:17:57
Gerd
Moin,
lade bitte deine Datei hoch u. beschreibe dein konkretes Beispiel.
Gruß Gerd
Anzeige
AW: Find Methode was ist zu beachten?
01.04.2018 16:07:49
Mr.T
Moin Gerd,
leider geht es aus Gründen der Vertraulichkeit nicht ohne weiteres. Kommen wir ggf. anders weiter?
Ansonsten müsste ich das Ganze erstmal bereinigen und nur die betreffende Problematik im Projekt übrig lassen.
Grüße
Mr.T
AW: Find Methode was ist zu beachten?
01.04.2018 16:11:11
Mr.T
Könnte ich Sie dir auch schicken statt hochzuladen?
AW: Find Methode was ist zu beachten?
01.04.2018 17:01:06
Gerd
Moin,
du kannst eine Musterdatei hochladen, die nur das Problem identisch mit deiner Originaldatei enthält,
hochladen.
Gruß Gerd
AW: Find Methode was ist zu beachten?
01.04.2018 19:26:35
Mr.T
Hallo Gerd,
habe es zeitlich doch noch geschafft. Damit ich hoffentlich morgen noch etwas weitermachen kann, sofern es gelöst wird :-)
Die Datei habe ich mal hochgeladen und auch noch etwas zur Beschreibung in A1 geschrieben.
https://www.herber.de/bbs/user/120790.xlsm
Wäre schön wenn Du oder jemand anderes sich das mal anschauen und es bestenfalls eine Lösung gibt.
Danke schonmal dafür
Anzeige
AW: Find Methode was ist zu beachten?
02.04.2018 00:43:08
Mullit
Hallo,
yup, das liegt an den Umbrüchen, kannst Du so lösen:
Private Sub TextBox1_Change()
Dim WkSh    As Worksheet
Dim rZelle  As Range
Dim lngIndex As Long
Set WkSh = ThisWorkbook.Worksheets("Tabelle2")
If TextBox1.Value  "" Then
With WkSh.Columns(2)
Set rZelle = .Find(What:=Replace$(Expression:=TextBox1.Value, _
Find:=vbCr, Replace:=""), LookAt:=xlPart, LookIn:=xlValues, MatchCase:=False)
If Not rZelle Is Nothing Then
For lngIndex = 2 To 5
Controls("TextBox" & lngIndex).Value = _
WkSh.Cells(rZelle.Row, lngIndex + 1).Value
Next
End If
End With
End If
End Sub

Gruß, Mullit
Anzeige
AW: Find Methode was ist zu beachten?
02.04.2018 01:29:17
Mr.T
Danke Mullit,
im Beispiel funktioniert es soweit ganz gut.
Die Sache ist, dass in der Originaldatei die Textboxen nicht in der Reihenfolge hintereinander kommen, sondern noch andere dazwischen sind und auch die Spalten im Quellenblatt, aus denen die Werte geholt werden nicht direkt hintereinander liegen bzw. nebeneiner in einer Reihe kommen.
Ich denke aus dem Grund meckert der Debugger an dieser Stelle:
Controls("TextBox" & lngIndex).Value = _
WkSh.Cells(rZelle.Row, lngIndex + 1).Value
Die Reihenfolge, die derzeit gegeben ist, ist vielleicht aus dem Ursprungspost ersichtlich:
TextBox3.Value = WkSh.Cells(rZelle.Row, 3).Value
TextBox40.Value = WkSh.Cells(rZelle.Row, 9).Value
TextBox41.Value = WkSh.Cells(rZelle.Row, 10).Value
TextBox42.Value = WkSh.Cells(rZelle.Row, 11).Value
Könnte zwar alles anpassen mit sehr viel Aufwand...aber evtl geht es ja einfacher über Code-Anpassung?
Besten Dank nochmal für den Schritt bis hier!
Anzeige
AW: Find Methode was ist zu beachten?
02.04.2018 09:51:04
Gerd
Moin
Private Sub TextBox1_Change()
Dim WkSh    As Worksheet
Dim rZelle  As Range
Dim lngIndex As Long
Set WkSh = ThisWorkbook.Worksheets("Tabelle2")
If TextBox1.Value  "" Then
With WkSh.Columns(2)
Set rZelle = .Find(What:=Replace$(Expression:=TextBox1.Value, _
Find:=vbCr, Replace:=""), LookAt:=xlPart, LookIn:=xlValues, MatchCase:=False)
If Not rZelle Is Nothing Then
TextBox3.Value = .Cells(rZelle.Row, 3).Value
TextBox40.Value = .Cells(rZelle.Row, 9).Value
TextBox41.Value = .Cells(rZelle.Row, 10).Value
TextBox42.Value = .Cells(rZelle.Row, 11).Value
Set rZelle = Nothing
End If
End With
End If
Set WkSh = Nothing
End Sub

Gruß Gerd
Anzeige
AW: Find Methode was ist zu beachten?
02.04.2018 13:33:15
Mr.T
Moin,
vielen Dank an Euch für die Unterstützung. Ich denke das funktioniert jetzt so wie ich es mir dachte.
Funktionieren tut es, aber könnt ihr mir noch die folgende Code-Zeile erklären, damit ich es verstehe?
Set rZelle = .Find(What:=Replace$(Expression:=TextBox1.Value, _
Find:=vbCr, Replace:=""), LookAt:=xlPart, LookIn:=xlValues, MatchCase:=False)
Viele Grüße
Mr.T
AW: Find Methode was ist zu beachten?
02.04.2018 17:17:26
Mullit
Hallo,
die Replace-Func ersetzt im Suchbegriff alle Zeilenumbrüche mit Leerzeichen, und es kommt zur Übereinstimmung, MatchCase ignoriert Groß-/Kleinschreibung bei der Suche und bei Tipp-Fehlern aus diesem Grund erhälst Du trotzdem Treffer, False ist zwar der Default-Value dieses Parameters, der kann aber durch die 'händische' Suche in Excel verstellt werden, die Find-Methode übernimmt dann den zuletzt gewählten Parameter.
Darum sollte man alle entsch. Parameter bei jeder Suche neu angeben und setzen...
Gruß, Mullit
Anzeige
AW: Find Methode was ist zu beachten?
02.04.2018 17:28:38
Mullit
Hallo nochmal,
wobei letzteres in Deinem Fall nicht kriegsentscheidend war, da diesbezüglich ja eins zu eins eingelesen wird, die Replace-Func macht die Musik...
Gruß, Mullit
AW: Find Methode was ist zu beachten?
02.04.2018 19:56:23
Mr.T
Super, Dankeschön.
Eine Frage hätte ich noch.
Über u.g. code fülle ich die erste Combobox mit werten OHNE Duplikate. Wie bekomme ich es hin, dass Leerzellen also quasi Leerzeilen aus der Combobox verschwinden? Diese Leeren Zellen tauchen u.U. in der Quellentabelle auf.
Dim oDic1 As Object, meAr1
Dim A As Long
Set oDic1 = CreateObject("Scripting.Dictionary")
With Sheets("Datenpool")
meAr1 = .Range("Bereiche", .Cells(.Rows.Count, 2).End(xlUp))
End With
If meAr1 "" Then
For A = 1 To UBound(meAr1)
oDic1(meAr1(A, 1)) = 0
End If
Next
ComboBox1.List = oDic1.keys
Anzeige
AW: Find Methode was ist zu beachten?
02.04.2018 20:37:52
Mullit
Hallo,
mind. zwei Möglichkeiten: entweder Du schmeißt den Autofilter an (natürlich per Code), filterst auf leere Zellen und überträgst den Bereich in Dein Array, oder Du überträgst Deinen Ausgangsbereich in ein Temp-Array und schließt dabei per If-Abfrage die Leerzellen aus, dann weiter über Dein Dictionary...
Gruß, Mullit
AW: Find Methode was ist zu beachten?
02.04.2018 20:52:17
Mullit
Hallo nochmal,
ah das war jetzt auch Crap von mir, Dein Dictionary eliminiert Dir ja schon fast alle Leereinträge, da doppelt, bis auf einen, den solltest Du entweder direkt aus dem Dictionary entfernen können, per Remove-Methode, oder auf gleichem Weg aus der Listbox....
Gruß, Mullit
Anzeige
AW: Find Methode was ist zu beachten?
02.04.2018 20:57:19
Mr.T
Ok, kann sein ,dass er mir vorhin deswegen schon einen Fehler ausgeworfen hat.
Kannst Du mir per code zeigen, wie ich das anstelle?
Meine vba Kenntnisse sind noch nicht so gut, dass ich aus einer Beschreibung einen Code erstellen kann.
Bringe es mir halt Stück für Stück bei und ständig kommt irgendwas neues wo ich nicht mit gerechnet habe :-D
AW: Combobox aus Dictionary füllen
02.04.2018 21:21:47
Gerd
Moin,
oder gar nicht reinlesen.
Dim oDic1 As Object, meAr1, A
Set oDic1 = CreateObject("Scripting.Dictionary")
With Sheets("Datenpool")
meAr1 = .Range(.Cells(2, 2), .Cells(.Rows.Count, 2).End(xlUp)).Value
End With
For Each A In meAr1
If Not IsEmpty(A) Then oDic1(CStr(A)) = 0
Next
ComboBox1.List = oDic1.keys
oDic1.RemoveAll
Set oDic1 = Nothing

Gruß Gerd
AW: Combobox aus Dictionary füllen
02.04.2018 22:18:49
Mr.T
Danke Gerd!
Aber Nächstes Problem, Oh noooo.
Wenn ich nun in einer Spalte die mit der Find Methode von gestern durchsucht wird auch Leere Zeilen bzw Zellen habe, gibts eine Fehlermeldung Laufzeitfehler '13' Typen unverträglich und zwar hier in der zweiten Zeile:
Set rZelle = .Find(What:=Replace$(Expression:=TextBox2.Value, _
Find:=vbCr, Replace:=""), LookAt:=xlPart, LookIn:=xlValues, MatchCase:=False)
Ich vermute dass es daran liegt, dass ja in der Combobox eine Auswahl gemacht wird, aufgrunddessen wird der Bereich daneben durchsucht, der aber leer sein kann. Besser kann ich es leider nicht beschreiben. In der Beispieldatei von gestern würde also im Tabellenblatt, welches als Quelle dient, nicht in der Spalte von Bereich1 sondern in Bereich2 etc. eine leere Zelle vorkommen, dort müsste der Fehler ja eigentlich auch auftreten sobald ich genau diese Zeile über die Combobox anwähle. Tut es aber nicht. Dort funktioniert es.
AW: Combobox aus Dictionary füllen
02.04.2018 22:39:07
Mr.T
Muss noch was ergänzen, und zwar tritt das Ganze bisher nur bei einer bestimmten Zeile auf, ob noch welche folgen kann ich nicht sagen. Alle anderen funktionieren. Woran es liegt konnte ich aber bisher nicht rausfinden.
Grüße

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige