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

Forumthread: suchen als VBA-Befehl

suchen als VBA-Befehl
26.05.2006 21:18:03
Jürgen
Hallo zusammen,
ich suche diese Art Formel als VBA-Befehl:
Tabelle1
 AB
1Bezeichnung 
2Silberkette 925er1
Formeln der Tabelle
B2 : =SUCHEN("*kette*";A2;1)
 
Diagramm - Grafik - Excel Tabellen einfach im Web darstellen    Excel Jeanie HTML  3.0    Download  
mit dieser Version habe ich nicht wirklich Erfolg, da nur der Begriff Kette klein geschrieben gefunden wird. Silberkette nicht mehr.
Public Function Trennen(Wert As String) If InStr("*kette*", Wert) Then 'funktioniert leider nicht so wirklich Trennen = 1 Else Trennen = 2 End If End Function
Mit Aufzeichnen komme ich in diesem Fall auch nicht weiter. Gibt es die Möglichkeit, diesen Befehl in VBA als Function darzustellen? Über einen Tipp würde ich mich sehr freuen, da ich so viele "und" bzw "oder"-Verknüpfungen unterbringen kann. Gruß Jürgen
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: suchen als VBA-Befehl
26.05.2006 21:21:13
Herbert
Hi,
siehe dir in der Hilfe die richtige Reihenfolge der Argumente an.
mfg Herbert
AW: suchen als VBA-Befehl
26.05.2006 21:23:48
Peter
Hallo Jürgen,
der Befehl InStr arbeitet so:
Public Sub Suchen() If InStr(Range("A1").Value, "kette") > 0 Then MsgBox "der Suchbegriff wurde gefunden" Else MsgBox "den Suchbegriff gibt es nicht im Text" End If End Sub
Viele Grüße Peter
Eine kurze Nachricht, ob es läuft, wäre nett - danke.
Anzeige
AW: suchen als VBA-Befehl
26.05.2006 21:57:31
Jürgen
Hallo Peter, hallo Herbert,
danke für die schnellen Antworten. Peter, leider scheitere ich daran mir aus deinem Vorschlag eine Funktion zu erstellen. Ich möchte das ganze als Formel eingeben können.
Z.B wie in Zelle B2. Kannst du mir da eventuell mal als Beispiel zeigen?
Tabelle1
 AB
1Bezeichnung 
2RingKeine Kette
Formeln der Tabelle
B2 : =trennen(A2)
 
Diagramm - Grafik - Excel Tabellen einfach im Web darstellen    Excel Jeanie HTML  3.0    Download  
Wäre super,
danke im voraus,
Gruß Jürgen
Anzeige
AW: suchen als VBA-Befehl
26.05.2006 22:01:08
Peter
Hallo Jürgen,
so auf die Schnelle:
Public Function Suchmal(rng As Range, Begriff As String) As Boolean Dim Zelle As Range For Each Zelle In rng If InStr(Zelle, Begriff) > 0 Then Suchmal = True Else Suchmal = False End If Next Zelle End Function
In Zelle A1 steht Silberkette 925 Sterlingsilber
In B1 =Suchmal(A1; "kette")
Viele Grüße Peter
Eine kurze Nachricht, ob es läuft, wäre nett - danke.
Anzeige
AW: suchen als VBA-Befehl
nonever
Sub MultiSuche()
Dim Sh As Worksheet
Dim GZelle As Range
Dim FStelle$
Dim SBegriff
SBegriff = InputBox("Bitte Suchbegriff eingeben:")
For Each Sh In Worksheets
Sh.Activate
Set GZelle = Sh.Cells.Find(SBegriff)
If Not GZelle Is Nothing Then
FStelle = GZelle.Address
Do
GZelle.Activate
If MsgBox("WeiterSuchen", vbYesNo + vbQuestion) = vbNo Then Exit Sub
Set GZelle = Cells.FindNext(After:=ActiveCell)
If GZelle.Address = FStelle Then Exit Do
Loop
End If
Next Sh
MsgBox ("Suche beendet.")
End Sub
Anzeige
AW: suchen als VBA-Befehl
26.05.2006 22:21:21
Jürgen
Hallo Peter,
ja das funktioniert, aber es ist doch komplizierter als ich gehofft habe. Letztendlich wollte ich zunächst diese Formelreihe in einer VBA-Funktion unterbringen. Sie trennt Schmuckartikel von anderen Artikeln.Das ganze Werkzeug ist ziemlich träge.
hilfe_Art_trennen
 ABCDEFGHIJKLM
1   36568-Münzen568-Muenzen568
Uhr
Lexikon7er
Zippos
7er
Münzen
7er
Muenzen
 
2CITIKNITS, Shirt 3/4174100       0
Formeln der Tabelle
A2 : =' Adj_11_12_32_33_44_45_46_47'!C2
B2 : =LINKS(' Adj_11_12_32_33_44_45_46_47'!B2;3)
C2 : =LINKS(' Adj_11_12_32_33_44_45_46_47'!B2;1)
D2 : =ZÄHLENWENN(C2;"3")
E2 : =ZÄHLENWENN(C2;"6")
F2 : =WENN(B2="568";SUCHEN("*münz*";A2;1);"")
G2 : =WENN(B2="568";SUCHEN("*muenz*";A2;1);"")
H2 : =WENN(B2="568";SUCHEN("*uhr*";A2;1);"")
I2 : =WENN(B2="568";SUCHEN("*lexikon*";A2;1);"")
J2 : =WENN(C2="7";SUCHEN("*zippo*";A2;1);"")
K2 : =WENN(C2="7";SUCHEN("*münz*";A2;1);"")
L2 : =WENN(C2="7";SUCHEN("*muenz*";A2;1);"")
M2 : =ZÄHLENWENN(D2:L2;1)
 
Diagramm - Grafik - Excel Tabellen einfach im Web darstellen    Excel Jeanie HTML  3.0    Download  
Aber das erscheint mir zu kompliziert.
Danke für die Hilfe an alle Antworter.
Gruß Jürgen
Anzeige
AW: suchen als VBA-Befehl
27.05.2006 12:21:21
Daniel
Hallo,
wenn du für eine bestehende Excel-Funktion keine entsprechende VBA-Funktion finden kannst, kannst du mit "Worksheetfunction.xxx()" die entsprechende Excelfunktion im Makro verwenden. Die Formelbezeichnung ist natürlich Englisch, aber du kannst sie einfach ermitteln, in dem du die entsprechende Zelle selektierst und im VBA-Edtior im Direktfenster den Befehl "?selection.formula" eingibst.
In deinem Fall wäre die Funktion:
Application.Worksheetfunction.Search(...)
die Parameter sind die gleichen wie in Excel
Gruß, Daniel
Anzeige
AW: suchen als VBA-Befehl
27.05.2006 12:41:19
Jürgen
Hallo Daniel,
jo das ist es. Super vielen Dank, das hilft mir weiter. Vielleicht fragst du dich, wofür ich das überhaupt brauche, aber ich versuche so eine große Datei ( aus einem Warenwirtschaftssystem täglich generiert ) nach Schmuck und nicht Schmuck zu trennen. Und das sind halt viele Kriterien, die ich sonst nur mit vielen "Wenns" ermitteln könnte. Ich denke mit einer eigenen Funktion und dann als Formel komme ich hier besser zum Ziel.
Tabelle1
 AB
1ArtikelbezeichnungFormel
2SilberketteKette
3Ring#WERT!
4Kette GoldKette
5Goldkette 40 cmKette
6  
7  
8ca 20.000 Datensätze 
9  
Formeln der Tabelle
B2 : =trennen(A2)
B3 : =trennen(A3)
B4 : =trennen(A4)
B5 : =trennen(A5)
 
Diagramm - Grafik - Excel Tabellen einfach im Web darstellen    Excel Jeanie HTML  3.0    Download  
Aber so komme ich nun in jedem Fall weiter.
Public Function Trennen(Wert As String) If Application.WorksheetFunction.Search("*kette*", Wert, 1) >= 1 Then Trennen = "Kette" Else Trennen = "keine Kette" End If End Function
Nochmals vielen Dank für deine Antwort.
Gruß Jürgen
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Suchen als VBA-Befehl in Excel


Schritt-für-Schritt-Anleitung

Um die suchen vba Funktion in Excel zu nutzen und eine eigene Funktion zu erstellen, die das Suchen von Begriffen ermöglicht, folge diesen Schritten:

  1. Öffne Excel und gehe zu Entwicklertools -> Visual Basic, um den VBA-Editor zu starten.

  2. Wähle im Projekt-Explorer das entsprechende Arbeitsblatt oder die Arbeitsmappe aus, in der du die Funktion erstellen möchtest.

  3. Klicke auf Einfügen und wähle Modul, um ein neues Modul hinzuzufügen.

  4. Füge den folgenden Code in das Modul ein:

    Public Function Trennen(Wert As String) As String
       If Application.WorksheetFunction.Search("*kette*", Wert, 1) >= 1 Then
           Trennen = "Kette"
       Else
           Trennen = "keine Kette"
       End If
    End Function
  5. Speichere deine Änderungen und schließe den VBA-Editor.

  6. Gehe zurück zu deinem Excel-Arbeitsblatt und verwende die Funktion in einer Zelle, z.B. =Trennen(A2).


Häufige Fehler und Lösungen

  • Fehler: „#WERT!“

    • Lösung: Überprüfe, ob der Suchbegriff korrekt ist und ob die Zelle, die du suchst, Text enthält. Stelle sicher, dass die Funktion Application.WorksheetFunction.Search korrekt verwendet wird.
  • Fehler: Funktion findet keine Begriffe

    • Lösung: Achte darauf, dass du die Groß- und Kleinschreibung bei der Suche berücksichtigst. Die InStr-Funktion ist hier möglicherweise hilfreicher, wenn du nach einer genauen Übereinstimmung suchst.

Alternative Methoden

Wenn du nach einer anderen Möglichkeit suchst, Begriffe in Excel zu finden, kannst du folgende Ansätze in Betracht ziehen:

  1. Verwendung von InStr:

    Public Function SuchenBegriff(rng As Range, Begriff As String) As Boolean
       If InStr(rng.Value, Begriff) > 0 Then
           SuchenBegriff = True
       Else
           SuchenBegriff = False
       End If
    End Function
  2. Direkte Verwendung von Excel-Funktionen in VBA: Du kannst auch Excel-Funktionen direkt in VBA verwenden, wie z.B. Application.WorksheetFunction.Find.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie du die VBA Suchfunktion nutzen kannst:

  • Beispiel 1: Suche nach „kette“ in der Zelle A1.

    Sub BeispielSuchen()
       If InStr(Range("A1").Value, "kette") > 0 Then
           MsgBox "Der Suchbegriff wurde gefunden"
       Else
           MsgBox "Den Suchbegriff gibt es nicht im Text"
       End If
    End Sub
  • Beispiel 2: Nutze die Funktion Trennen in einer Tabelle, um verschiedene Artikel zu kategorisieren.


Tipps für Profis

  • Nutze VBA-Befehle wie Find und FindNext, um in großen Datenmengen effizient nach Begriffen zu suchen.
  • Erstelle eine benutzerdefinierte Funktion, die mehrere Suchbegriffe gleichzeitig unterstützt, indem du sie in einer Schleife durchgehst.
  • Verwende Option Explicit am Anfang deiner Module, um sicherzustellen, dass alle Variablen deklariert sind.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Suchbegriffe gleichzeitig suchen? Du kannst eine Schleife verwenden, um durch ein Array von Suchbegriffen zu iterieren und die InStr-Funktion für jeden Begriff aufzurufen.

2. Was mache ich, wenn die Funktion nicht wie erwartet funktioniert? Überprüfe den Code auf Tippfehler und stelle sicher, dass alle Variablen korrekt deklariert sind. Teste die Funktion mit verschiedenen Beispielen, um die Ursache des Problems zu identifizieren.

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