5.1k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo,

ich habe eine Wörterbuch-Liste in Excel erstellt und brauche nun eine Suchfunktion, am besten via VBA, welche die Liste nach Wörtern durchsucht.
Am besten wären 2 Buttons (also 2 Programme) für jeweils eine Spalte in der gesucht werden soll. Das heißt ich möchte jede Spalte einzeln nach Wörtern durchsuchen.

Am allerschönsten wäre es, wenn ich die Programmierung einfach nur einfügen müsste :) Denn ich bin leider kein Computerspezi :)

Kann mir da bitte jemand helfen? :)

Nacholino

15 Antworten

0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
Hallo,

hast du mal an Autofilter gedacht, ich glaube das ist einfacher.

Gruß

Helmut
0 Punkte
Beantwortet von
Hallo,

ja, aber da die Liste seeeeehr lang ist, würde man durch den Autofilter wieder suchen müssen. Genau das wollte ich vermeiden, sonst könnte man ja auch mit Strg + F suchen.
Wollte gerne die 2 Buttons haben :(

Aber trotzdem Danke!!!

Nacholino
0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
Hallo,

ich meinte so:

"Autofilter" und dann beim Entsprechenden Pfeil "Benutzerdefiniert" hier mit "Enspricht" oder Enthält" und deiner Eingabe.

Gruß

Helmut
0 Punkte
Beantwortet von
Danke, ist schon eine gute Idee. Brauche es aber noch einfacher, deswegen wäre VB perfekt...
0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
Hallo,

bei VBA bekommst relativ einfach noch "Enspricht" hin, aber "Enthält" wo du nur einTeilwort eingeben musst, das wird schwieriger.

Versuch es mal mit Aufzeichnen der Funktion.

Gruß

Helmut
0 Punkte
Beantwortet von fedjo Experte (2.2k Punkte)
Hallo Nacholino,
kommt der Suchbegriff in der Spalte öfter vor oder nur einmal?

Gruß
fedjo
0 Punkte
Beantwortet von coros Experte (4k Punkte)
Hallo Nacholino,

versuche mal nachfolgendes Makro, das bei mir schon des Öfteren zum Einsatz gekommen ist.

Kopiere das Makro in ein StandardModul und starte es z.B. über eine Befehlsschaltfläche
Teste das Makro aber bitte in einer Testdatei und nicht gleich in Deiner Originaldatei.

Option Explicit

Sub Suchen()
Dim strSuche As String
Dim strFind() As String
Dim strFirstAddress As String
Dim strText As String

Dim rngBereich As Range

Dim lngIndex1 As Integer
Dim lngIndex2 As Integer
Dim schalter As Integer

strSuche = InputBox("Suchbegriff eingeben", "Suchenfunktion")

If strSuche = "" Or Len(strSuche) = 0 Then Exit Sub

Set rngBereich = Cells.Find(what:=strSuche, lookat:=xlPart, LookIn:=xlValues, MatchCase:=False)

If rngBereich Is Nothing Then
Beep
MsgBox "Der Suchbegriff wurde nicht gefunden! Es ist aber nicht 100% sicher, dass der gesuchte " _
& "Begriff sich nicht in der Tabelle befindet. Überprüfen Sie daher bitte nochmal die " _
& "Schreibweise und geben den Suchbegriff erneut ein, oder suchen Sie den Begriff manuell " _
& "in der Tabelle.", vbInformation, "Nichts gefunden..."
Else
strFirstAddress = rngBereich.Address
Do
lngIndex1 = lngIndex1 + 1
ReDim Preserve strFind(1 To lngIndex1)

strFind(lngIndex1) = rngBereich.Address

Set rngBereich = Cells.FindNext(rngBereich)
Loop While Not rngBereich Is Nothing And rngBereich.Address <> strFirstAddress
Do
lngIndex2 = lngIndex2 + 1

If lngIndex2 = lngIndex1 Then
strText = ""
schalter = 0
End If

Range(strFind(lngIndex2)).Select

ActiveWindow.ScrollRow = Selection.Row
If lngIndex1 > 1 Then
If MsgBox(CStr(lngIndex2) & ". von " & CStr(lngIndex1) & " gefunden Übereinstimmungen des Suchbegriffes." _
& vbNewLine & "Die nächste Übereinstimmung anzeigen?", vbQuestion + vbYesNo, "gefundener Begriff...") = 7 Then _
Exit Do
Else
MsgBox "Eine Übereinstimmung des Suchbegriffes gefunden." _
, vbInformation, "Begriffe gefunden..."
End If

If lngIndex2 = lngIndex1 Then Exit Do
Loop
End If

Set rngBereich = Nothing

End Sub
Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf meiner HP in der Rubrik Anleitungen und dort dann in der Anleitungsnummer 3 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.

Bei Fragen melde Dich.

MfG,
Oliver
[sub]Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du[/sub]
[sup] ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup]
0 Punkte
Beantwortet von fedjo Experte (2.2k Punkte)
Hallo Nacholino,
vielleicht hilft dir ein Muster weiter.

Gruß
fedjo
0 Punkte
Beantwortet von
Guten Morgen :)

@Coros: Aus irgendwelchen Gründen funktioniert das bei mir nicht.
Ich habe alles in einem Modul eingegeben, aber sobald ich dann den Button anklicke, passiert nichts. Habe das jetzt alles in einem Modul stehen, brauche ich noch einen anderen Code für die Tabelle?

@fedjo: das ist quasi ein Wörterbuch (Deutsch-Englisch) und da kommt jedes Wort nur einmal vor.

Wie bezeichne ich Spalten im VBA?

Zum Beispiel bei dem Code:

Private Sub CommandButton1_Click()
Call SearchAllTables -------> Anstatt alltables möchte ich nur die SpalteA
End Sub

Vielen Dank schon mal!
0 Punkte
Beantwortet von coros Experte (4k Punkte)
Hallo Nacholino,

warum mein Makro in Deiner Datei nicht funktioniert, kann ich Dir nicht sagen, da müsste ich Deine Datei haben. Du kannst die gerne mal bei http://www.file-upload.net/ hochladen und uns den Link, den Du erhältst hier mitteilen.

Zu Deiner Frage 2: Bei dem Befehl kann man keine Spalte angeben, denn der Befehl startet das Makro "SearchAllTables". In diesem Makro müsste man nun schauen, ob es dort überhaupt möglich ist, nur eine Spalte anzugeben oder ob dazu das gesamte Makro umgearbeitet werden muss. Da ich das Makro "SearchAllTables" nicht kenne, kann ich nicht mehr dazu sagen.

MfG,
Oliver
[sub]Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du[/sub]
[sup] ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup]
...