Anzeige
Archiv - Navigation
1744to1748
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

VBA Suchfunktion

VBA Suchfunktion
09.03.2020 18:19:49
Peter

Hallo zusammen,
ich tüftle schon seit über einem Tag an meiner „Suchformel“.
Egal was ich mache, es kommt immer wieder einen anderer Fehler.
Ich möchte einen dynamischen Wert aus einer fest definierten Zelle (G15) nehmen, um diesen in 4 verschiedenen Tabellen zu suchen.
Dim bereich as Range
Set bereich = Worksheets("Tabelle3").Range("G15").Value
If Sheets("Tabelle1").Range("C:C").Find(bereich, , xlValues) Then
Sheets("Tabelle3").Range("E15").Value = Sheets("Tabelle 1").Range("C12").Value
End If
If Nothing Is Sheets("Tabelle1").Range("C:C").Find(bereich, , xlValues) Then
Sheets("Tabelle3").Range("E15").Value = ""
End If
In diesem Beispiel wird nur in einer Tabelle gesucht.
Könnt Ihr mir sagen wo mein/e Hänger ist/sind?
Danke schon mal im Voraus.

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Suchfunktion
09.03.2020 18:34:46
Regina
Hi, ich vermute, das müsste so aussehen:
Dim bereich As String
bereich = Worksheets("Tabelle3").Range("G15")
If Not Sheets("Tabelle1").Range("C:C").Find(bereich, , xlValues) Is Nothing Then
Sheets("Tabelle3").Range("E15").Value = Sheets("Tabelle1").Range("C12").Value
Else
Sheets("Tabelle3").Range("E15").Value = ""
End If
Solltest Du nicht nach einem Tex, sondern einer Zahl suchen, könntest Du aus String auch Long (Ganzzahl) oder Double machen.
Gruß Regina
AW: VBA Suchfunktion
09.03.2020 18:44:11
ChrisL
Hi Peter
Willst du nur wissen, ob Wert vorhanden ja/nein? VERGLEICH() = Application.Match()
Oder läuft es im Endeffekt auf einen SVERWEIS() = WorksheetFunction.VLookUp() hinaus?
Mehrfachtreffer?
Fehlermeldung?
Zum Hänger, ich vermute ein Typenfehler. Find gibt ein Range-Objekt zurück.
If ...Find() Is Nothing Then
If Not ...Find() Is Nothing Then
If ...Find() Then
Geht so nicht weil Resultat=Objekt, würde aber z.B. mit Zahl oder WAHR/FALSCH (boolean) funktionieren, was keine Objekte sind.
Ich würde Find nicht direkt in der If-Bedingung verwenden.
Dim rngResultat As Range
Dim rngBereich as Range
Set rngBereich = Worksheets("Tabelle3").Range("G15").Value
Set rngResultat = ....Find()
If rngResultat Is Nothing Then
Else
End If
Zusätzlich achte darauf, dass du auch die optionalen Parameter der Find-Methode mit angibst.
https://docs.microsoft.com/en-us/office/vba/api/excel.range.find
cu
Chris
Anzeige
AW: VBA Suchfunktion
09.03.2020 19:24:19
Peter
Vielen Dank für Eure schnelle Antwort!
Was ich vergessen habe zu erwähnen, wenn der Wert in einer der 4 Tabellen gefunden wird,
soll die Kopfzeile der entsprechenden Tabelle wiedergegeben werden (zB. C12).
@ Regina Resch-Jansen
Es kommt kein Fehler, der Vorgang wird normal abgeschlossen, jedoch steht in der Zelle (E15) nichts drin.
Eigentlich soll dort wenn gefunden C12 wiedergegeben werden.
@ChrisL
Ich bekomme bei der Variante den Fehler : „Laufzeitfehler 424, Objekt erforderlich“
Angezeigt wird mit dabei die Zeile: „Set rngBereich = Worksheets("Tabelle3").Range("G15").Value“
Gruß Peter
Anzeige
AW: VBA Suchfunktion
09.03.2020 19:34:16
Regina
Hallo Peter,
beui mir lief das....
Vielleicht solltest Du mal die Datei hochladen.
In wie fern ist beispielsweise C12 eine Kopfzeile?
Gruß Regina
AW: VBA Suchfunktion
09.03.2020 19:43:51
ChrisL
Sorry ohne Value
Set rngBereich = Worksheets("Tabelle3").Range("G15")

ist ja ein Objekt und (noch) kein Wert :)
suchen tust du nachher rngBereich.Value
AW: VBA Suchfunktion
09.03.2020 19:47:24
Peter
Ich habe 4 Tabellen im Tab1 (C:C;D:D;E:E;F:F).
Über jeder Tabelle steht ein Bezeichnungsname (Kopfzeile).
Diese Bezeichnung (im Bsp. Wäre das C12) soll wiedergegeben werden,
wenn in dieser Tabelle das Wort aus G15 gefunden wird.
Anzeige
AW: VBA Suchfunktion
09.03.2020 20:02:01
ChrisL
wie Regina schon anregte, wird Zeit eine kleine Beispieldatei zu posten. (was z.b. wenn Treffer auf mehreren Tabellen)
AW: VBA Suchfunktion
09.03.2020 21:03:07
Peter
Alles klar, ich schicke es dann später rum.
Danke.
AW: VBA Suchfunktion
10.03.2020 07:10:59
Regina
Hi, nach Deiner Beispieldatei sollte es für die Spalte C so funktionieren:
Public Sub suche()
Dim bereich As String
bereich = Worksheets("Tabelle3").Range("G15")
If Not Sheets("Tabelle1").Range("C:C").Find(bereich, , xlValues) Is Nothing Then
Sheets("Tabelle3").Range("E15").Value = Sheets("Tabelle1").Range("C3").Value
Else
Sheets("Tabelle3").Range("E15").Value = ""
End If
End Sub
Ich verstehe nur nicht, warum Du zuerst immer von C12 gesprochen hast. Deine "Kopfzeile" steht in C3 und dort stehen Vornamen.
Gruß Regina
Anzeige
AW: VBA Suchfunktion
10.03.2020 20:19:51
Peter
Wunderbar, es funktioniert J
Was die C12 Zelle angeht, ich habe eine abgespeckte Kopie von meiner Datei gemacht, welche ich dann hochgeladen habe.
Ich habe die „Kopfzeilen“ vergessen in die Zeile 12 zu schreiben, darum waren sie jetzt in der Zeile 3 gelandet.
Hier nun noch eine kleine Auswertung:
Anfangs ging es trotzdem nicht, bei der hochgeladenen Datei hat es funktioniert, bei meiner jedoch nicht.
Ich hatte hier 1 Fehler drin, den ich immer hin und her geschoben habe.
1. Bei mir stand in „Range("C:C").“ nicht „C:C“ drin, sondern „ZeitenK“(Zellen auswählen, Namen definieren = ZeitenK)
2. Wenn ich „ZeitenK“ nicht drin stehen hatte, hatte ich zwar „C:C“ drin, da jedoch ich 2 Zellen verbunden habe, hat er das nicht haben wollen.
Die Lösung zum Ganzen sieht nun so aus, das die Range auf („C:D“) angepasst wurde, da die Zellen ja verbunden sind J
Vielen Dank nochmal.
Anzeige
AW: VBA Suchfunktion
10.03.2020 20:56:00
Regina
ok, danek für die Rückmelung!
Verbundzellen sollte man meiden, führt immer gerne zu Problemen!
Gruß Regina

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige