Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA - Zellenwert suchen und daneben ausgeben

VBA - Zellenwert suchen und daneben ausgeben
05.02.2015 13:57:55
Dieter
Hallo liebes Herber Forum,
Hallo liebe Mitglieder,
Ich habe folgenden Code aufgesetzt, um mir Zellen (Beschreibung: Hallo) in Spalte B finden zu lassen und dazugehörige, nebenstehende Werte in von mir definierten Zellen ausgeben zu lassen. Das ganze basiert auf einem anderen Beitrag in diesem Forum.
Der Code lautet
Sub x3finden()
Dim strSuche As String
Dim rngFound As Range
Dim strFirstAddress As String
Dim i As Long
i = 5
strSuche = "X3"
Set rngFound = Columns(2).Find(What:=strSuche, After:=Cells(Rows.Count, 2), LookIn:=xlValues, _
LookAt:=xlWhole)
If rngFound Is Nothing Then Exit Sub
strFirstAddress = rngFound.Address
Do
Cells(i, 4).Value = rngFound.Offset(, 1).Value
Set rngFound = Columns(2).FindNext(rngFound)
i = i + 1
Loop While rngFound.Address  strFirstAddress
End Sub
Was ich benötige ist, dass der Wert nicht in einer von mir vorgefertigten, eingegebenen Zelle ausgegeben wird (hier: I, bzw. für jeden weiteren gefundenen "Hallo"-Wert I + 1), sondern in einer danebenstehenden.
Dies bedeutet, wenn der Eintrag in B15 gefunden wird (Wert zu "Hallo" in C15), soll er in D15 ausgegeben werden!
Auch ein Loop ist mir sehr wichtig, da ich viele dieser Werte suchen und finden bzw. ausgeben muss.
Ich hoffe ich konnte mein Problem anschaulich dastellen.
Da ich mich gerade erst in VBA einarbeite habe ich noch gewisse Anfangsschwierigkeiten. Aber ist ja noch kein Meister vom Himmel gefallen!
MfG,
Dieter Nasch

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - Zellenwert suchen und daneben ausgeben
06.02.2015 17:16:28
Arthur
Hallo Dieter.
Die Zielspalte ist mit dem zweiten Parameter in Cells(i, 4) definiert.
4 = Spalte D
5 = Spalte E
...
Gruß, Arthur

AW: VBA - Zellenwert suchen und daneben ausgeben
09.02.2015 20:54:01
Dieter
Hallo Arthur,
Danke für deine Antwort. Leider war dies nicht das gesuchte.
Es geht mir um den ausgabeort. Dieser ist bisher ja vordefiniert über die Cells Funktion und die Zeile wird über i+1 hochgezählt.
Ich will es jedoch in einer festen Spalte und einer variablen Zelle ausgeben lassen. Diese Zelle soll sich danach richten, WO der Wert gefunden wird. Wenn dieser in D15 gefunden wird, soll dieser in D17 ausgegeben werden. Wenn in X15, dann in X17!
Weiss jemand weiter?
Mit freundlichen Grüßen,
Dieter Nasch
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Zellenwert suchen und daneben ausgeben mit VBA


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf „VBAProject (DeineDatei.xlsx)“ > „Einfügen“ > „Modul“.

  3. Kopiere den folgenden Code in das Modul:

    Sub ZellenwertSuchen()
       Dim strSuche As String
       Dim rngFound As Range
       Dim strFirstAddress As String
       Dim i As Long
       i = 1 ' Startposition für die Ausgabe
       strSuche = "Hallo" ' Der gesuchte Wert
       Set rngFound = Columns(2).Find(What:=strSuche, After:=Cells(Rows.Count, 2), LookIn:=xlValues, _
       LookAt:=xlWhole)
    
       If rngFound Is Nothing Then Exit Sub
       strFirstAddress = rngFound.Address
    
       Do
           rngFound.Offset(0, 1).Value = "Gefunden!" ' Wert in die danebenstehende Zelle ausgeben
           Set rngFound = Columns(2).FindNext(rngFound)
       Loop While Not rngFound Is Nothing And rngFound.Address <> strFirstAddress
    End Sub
  4. Passe die Variablen an: Ändere strSuche entsprechend dem Wert, den du suchen möchtest. Wenn du nach einem Datum suchst, ersetze "Hallo" durch das gewünschte Datum.

  5. Führe das Makro aus: Schließe den VBA-Editor und gehe zurück zu Excel. Drücke ALT + F8, wähle ZellenwertSuchen und klicke auf „Ausführen“.


Häufige Fehler und Lösungen

  • Fehler: Keine Ergebnisse gefunden
    Lösung: Stelle sicher, dass der gesuchte Wert korrekt eingegeben und in der richtigen Spalte (z.B. Spalte B) vorhanden ist.

  • Fehler: Laufzeitfehler 1004
    Lösung: Überprüfe, ob die Spalte, in der du suchst, korrekt angegeben ist und ob die Zellen nicht geschützt sind.


Alternative Methoden

Eine Möglichkeit, Excel in Tabelle nach Wert zu suchen und Zelle daneben auszugeben, ist die Verwendung von Formeln anstelle von VBA. Die Funktion SVERWEIS kann hier hilfreich sein:

=SVERWEIS("Hallo"; B:C; 2; FALSCH)

Diese Formel sucht den Wert "Hallo" in Spalte B und gibt den entsprechenden Wert in Spalte C zurück.


Praktische Beispiele

  • Beispiel 1: Suche nach einem bestimmten Text in Spalte B und gib "Gefunden!" in die Zelle daneben (C) aus. Das oben genannte VBA-Skript kann direkt verwendet werden.
  • Beispiel 2: Suche nach dem größten Wert in einer Spalte und gebe den dazugehörigen Text daneben aus. Hierzu müsste der Code angepasst werden, um die Funktion WorksheetFunction.Max zu verwenden.

Tipps für Profis

  • Nutze Fehlerbehandlung in deinem VBA-Code, um unerwartete Fehler zu vermeiden. Füge zum Beispiel On Error Resume Next am Anfang deiner Subroutine hinzu.
  • Wenn du häufig Excel-Werte suchen und Zellen daneben ausgeben musst, speichere deinen Code als Add-In, um ihn schnell wiederverwenden zu können.

FAQ: Häufige Fragen

1. Wie kann ich nach einem Datum suchen und den Wert daneben ausgeben?
Du kannst einfach den gesuchten Wert in strSuche als Datum formatieren (z.B. strSuche = DateValue("01.01.2023")).

2. Ist es möglich, in einer anderen Tabelle nach Werten zu suchen?
Ja, du kannst den Find-Befehl auf eine andere Tabelle anwenden, indem du den Tabellenbezug in der Columns-Funktion änderst.

3. Wie kann ich den Code anpassen, um mehrere Werte gleichzeitig zu suchen?
Du kannst eine Schleife einfügen, die durch ein Array von Suchbegriffen iteriert und für jeden Begriff den Suchvorgang durchführt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige