Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Suchfunktion geht nicht

Forumthread: Suchfunktion geht nicht

Suchfunktion geht nicht
10.12.2007 14:59:24
Jonny
Hallo Leute,
habe mal wieder ein Problem
In ersten Schritt versuche ich über die Suchfunktion die Einträge aus der Excel-Tabelle Blattnahme 01 in die ListBox1 zu übernehmen. Der Suchbegriff Bezieht sich auf den Bereich H6:H5000 und kann folgend aussehen 01/ oder 01/123. Es währe schön wenn die Einträge in der ListBox1 auch noch aufsteigend sortiert würden.
Im zweiten Schritt sollte die Markierte Zeile der ListBox1, die Werte in TextBox2, 3, 4 und 5 anzeigen, doch so weit bin ich noch lange nicht.

Private Sub CommandButton1_Click()
Dim xSuche, xAdresse, xErste As String
Dim y As Boolean
Dim arr() As Variant
Dim c As Range
Dim iRowU As Integer
ListBox1.Clear
xSuche = TextBox1.Value
If xSuche = "" Then
MsgBox "Bitte erst einen Suchbegriff eingeben!",
Exit Sub
End If
Set c = ActiveWorksheet.Cells.Find _
(xSuche, LookIn:=xlValues)
If Not c Is Nothing Then
With Worksheets("01")
xErste = c.Address
y = True
Do Until xAdresse = xErste
ReDim Preserve arr(0 To 3, 0 To iRowU)
arr(0, iRowU) = .Cells(c.Row, 7)
arr(1, iRowU) = .Cells(c.Row, 2)
arr(2, iRowU) = .Cells(c.Row, 3)
arr(3, iRowU) = .Cells(c.Row, 4)
iRowU = iRowU + 1
Set c = .Cells.FindNext(after:=c)
xAdresse = c.Adresse(False, False)
Loop
xAdresse = ""
xErste = ""
End With
End If
If y = False Then
MsgBox "Der Suchbegriff wurde nicht gefunden!
Else
ListBox1.Column = arr
End If
End Sub


Bitte um ein Tipp was ich bei der Suchfunktion falsch mache.
bei Set c = ActiveWorksheet.Cells.Find _
(xSuche, LookIn:=xlValues)
Kommt die Fehlermeldung „Objekt erforderlich“ ?
Vielen Dank im Voraus.
Jonny

Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Suchfunktion geht nicht
10.12.2007 15:24:00
Rudi
Hallo,
du suchst möglicherweise nach dem kompletten Zellinhalt, erforderlich ist die Suche nach Teilen.
Set c = ActiveWorksheet.Cells.Find _
(xSuche, LookIn:=xlValues, LookAt:=xlPart)
Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

AW: Suchfunktion geht nicht
10.12.2007 15:31:00
Jonny
Hallo Rudi,
habe es gerade mit
Set c = ActiveWorksheet.Cells.Find _
(xSuche, LookIn:=xlValues, LookAt:=xlPart)
getestet leider immernoch die selbe Fehlermeldung
Gruß
Jonny

Anzeige
AW: Suchfunktion geht nicht
10.12.2007 16:01:35
Rudi
Hallo,
ActiveWorksheet gibt es (zumindest in XP) nicht.
Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

AW: Suchfunktion geht nicht
10.12.2007 17:42:00
Jonny
Ich habe es auch ohne ActiveWorksheet versucht ohne Effekt.
Ich verzweifele an dem Teil :(
Gruß
Jonny

AW: Suchfunktion geht nicht
10.12.2007 20:50:40
Erich
Hallo Jonny,
probiers mal mit

Option Explicit
Private Sub CommandButton1_Click()
Dim xSuche As String, xAdresse As String, xErste As String
Dim y As Boolean
Dim arr() As Variant
Dim rngC As Range
Dim iRowU As Integer
xSuche = TextBox1.Value
If xSuche = "" Then
MsgBox "Bitte erst einen Suchbegriff eingeben!" ',
Exit Sub
End If
With Worksheets("01")
Set rngC = .Cells.Find(xSuche, LookIn:=xlValues, LookAt:=xlPart)
If Not rngC Is Nothing Then
xErste = rngC.Address(False, False)
y = True
Do Until xAdresse = xErste
ReDim Preserve arr(0 To 3, 0 To iRowU)
arr(0, iRowU) = .Cells(rngC.Row, 7)
arr(1, iRowU) = .Cells(rngC.Row, 2)
arr(2, iRowU) = .Cells(rngC.Row, 3)
arr(3, iRowU) = .Cells(rngC.Row, 4)
iRowU = iRowU + 1
Set rngC = .Cells.FindNext(after:=rngC)
xAdresse = rngC.Address(False, False)
Loop
'        xAdresse = ""
'        xErste = ""
End If
End With
If y Then
ListBox1.Column = arr
Else
ListBox1.Clear
MsgBox "Der Suchbegriff wurde nicht gefunden!"
End If
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Suchfunktion
10.12.2007 21:20:48
Erich
Hallo Jonny,
noch eine Version, bei der eine Zeile nur einmal auftaucht,
auch wenn der Begriff mehrfach in der Zeile steht.
Die Parameter beim Find habe ich auch noch etwas ergänzt:

Option Explicit
Private Sub CommandButton1_Click()
Dim xSuche As String, xAdresse As String, xErste As String
Dim y As Boolean
Dim arr() As Variant
Dim rngC As Range
Dim iRowU As Integer
xSuche = TextBox1.Value
If xSuche = "" Then
MsgBox "Bitte erst einen Suchbegriff eingeben!" ',
Exit Sub
End If
With Worksheets("01")
Set rngC = .Cells(.UsedRange.Row + .UsedRange.Rows.Count, 1)
Set rngC = .Cells.Find(xSuche, after:=rngC, LookIn:=xlValues, _
LookAt:=xlPart, SearchDirection:=xlNext, MatchCase:=False)
If Not rngC Is Nothing Then
xErste = rngC.Address(False, False)
y = True
Do Until xAdresse = xErste
ReDim Preserve arr(0 To 3, 0 To iRowU)
arr(0, iRowU) = .Cells(rngC.Row, 7)
arr(1, iRowU) = .Cells(rngC.Row, 2)
arr(2, iRowU) = .Cells(rngC.Row, 3)
arr(3, iRowU) = .Cells(rngC.Row, 4)
iRowU = iRowU + 1
Set rngC = .Cells.FindNext(after:=Cells(rngC.Row, 256))
xAdresse = rngC.Address(False, False)
Loop
End If
End With
If y Then
ListBox1.Column = arr
Else
ListBox1.Clear
MsgBox "Der Suchbegriff wurde nicht gefunden!"
End If
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Suchfunktion
11.12.2007 09:51:00
Jonny
Hallo Erich,
vielen Dank für deine Hilfe, funktioniert bestens!
Bin bei der ersten Variante geblieben, musste allerdings ein neues UserForm erstellen, da das UserForn in das ich es integrieren wollte nicht mit Option Explicit klargekommen ist.
Gruß
Jonny
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Suchfunktion in Excel richtig nutzen


Schritt-für-Schritt-Anleitung

  1. Öffne das UserForm: Stelle sicher, dass dein UserForm die TextBox1 für die Eingabe des Suchbegriffs und die ListBox1 für die Anzeige der Ergebnisse enthält.

  2. Implementiere den VBA-Code: Verwende den folgenden Code, um die Suchfunktion zu aktivieren:

    Private Sub CommandButton1_Click()
       Dim xSuche As String, xAdresse As String, xErste As String
       Dim y As Boolean
       Dim arr() As Variant
       Dim rngC As Range
       Dim iRowU As Integer
    
       xSuche = TextBox1.Value
       If xSuche = "" Then
           MsgBox "Bitte erst einen Suchbegriff eingeben!"
           Exit Sub
       End If
    
       With Worksheets("01")
           Set rngC = .Cells.Find(xSuche, LookIn:=xlValues, LookAt:=xlPart)
           If Not rngC Is Nothing Then
               xErste = rngC.Address(False, False)
               y = True
               Do Until xAdresse = xErste
                   ReDim Preserve arr(0 To 3, 0 To iRowU)
                   arr(0, iRowU) = .Cells(rngC.Row, 7)
                   arr(1, iRowU) = .Cells(rngC.Row, 2)
                   arr(2, iRowU) = .Cells(rngC.Row, 3)
                   arr(3, iRowU) = .Cells(rngC.Row, 4)
                   iRowU = iRowU + 1
                   Set rngC = .Cells.FindNext(after:=rngC)
                   xAdresse = rngC.Address(False, False)
               Loop
           End If
       End With
    
       If y Then
           ListBox1.Column = arr
       Else
           ListBox1.Clear
           MsgBox "Der Suchbegriff wurde nicht gefunden!"
       End If
    End Sub
  3. Teste die Funktion: Gib einen Suchbegriff in TextBox1 ein und klicke auf den Button, um die Ergebnisse in ListBox1 anzuzeigen.


Häufige Fehler und Lösungen

  • Fehlermeldung: "Objekt erforderlich"
    Stelle sicher, dass du ActiveWorksheet durch ActiveSheet ersetzt. ActiveWorksheet existiert nicht in Excel VBA.

  • Suchfunktion gibt keine Ergebnisse zurück
    Überprüfe, ob du LookAt:=xlPart korrekt in den Code integriert hast. Dies ermöglicht die Suche nach Teilstrings.

  • Excel-Ausrichtung ausgegraut
    Dies kann passieren, wenn das Arbeitsblatt schreibgeschützt oder die Zellen, die du suchst, ausgeblendet sind. Stelle sicher, dass das Arbeitsblatt aktiv und bearbeitbar ist.


Alternative Methoden

  • Verwendung von XLOOKUP: In Excel 365 kannst du die XLOOKUP-Funktion verwenden, um einfacher nach Werten zu suchen und diese zurückzugeben. Der Vorteil ist, dass du dir um die Komplexität von VBA nicht kümmern musst:

    =XLOOKUP(A1, B:B, C:C)
  • Filtern der Tabelle: Du kannst auch die Filterfunktion in Excel verwenden, um gezielt nach Einträgen in deiner Tabelle zu suchen.


Praktische Beispiele

Angenommen, du hast eine Excel-Tabelle mit den folgenden Spalten: A (ID), B (Name), C (Alter) und D (Status). Wenn du nach einem bestimmten Namen suchst, wird die Suche in Excel wie folgt durchgeführt:

  1. Gib den Namen in TextBox1 ein.
  2. Der Code in der CommandButton1_Click-Subroutine sucht in der Spalte B nach diesem Namen und gibt die entsprechenden Werte aus den Spalten A, C und D in ListBox1 aus.

Tipps für Profis

  • Optimierung der Suche: Verwende MatchCase:=False in der Find-Methode, um die Suche nicht fallsensitiv zu machen.
  • Leistungsverbesserung: Falls du mit großen Datenmengen arbeitest, überlege, ob du die Suche in einem Array durchführen kannst, um die Leistung zu verbessern.
  • Sortierung der Ergebnisse: Du kannst die Ergebnisse in arr vor der Zuweisung an die ListBox1 sortieren.

FAQ: Häufige Fragen

1. Warum funktioniert die Suchfunktion in Excel nicht?
Die Suchfunktion könnte aufgrund falscher Parameter oder weil der Suchbegriff nicht im angegebenen Bereich vorhanden ist, nicht funktionieren.

2. Wie kann ich die Suchergebnisse sortieren?
Um die Suchergebnisse zu sortieren, musst du die Werte im Array arr vor der Zuweisung an die ListBox1 sortieren. Du kannst dazu eine Sortierfunktion in VBA verwenden.

3. Was tun, wenn Excel die Suchfunktion nicht ausführt?
Überprüfe, ob deine Excel-Version Unterstützung für die verwendeten Funktionen hat, und stelle sicher, dass die Syntax im VBA korrekt ist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige