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

Forumthread: VBA - Range Find mit 2 Variablen

VBA - Range Find mit 2 Variablen
07.03.2017 08:28:50
Nik
Hallo zusammen,
ich habe einen VBA Code der mir in einer Tabelle in der 1 Zeile den Wert KW1 sucht und dort dann eine Formel einfügt.

Dim c As Range
Range("CZ2") = Date
'#################### Aktuelle Kalenderwoche finden #############
Set c = Rows(1).Find("*KW1", LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
Cells(1, c.Column).Activate
ActiveCell.FormulaR1C1 = "=WEEKNUM(R[1]C104,21)"
Else
MsgBox "Spalte -WK1- wurde nicht gefunden"
Exit Sub
End If

Nun habe ich aber das Problem, dass bei manchen Excel Auswertungen dieser Wert nicht immer KW1 heißt.
Frage: Kann ich auch nach 2 Werten suchen? In etwa so ...
 Set c = Rows(1).Find("*KW1","*CWREQ1" LookIn:=xlValues, lookat:=xlWhole)
Danke schonmal vorab für jeden Hinweis oder Hilfe.
Gruss,
Nik
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: VBA - Range Find mit 2 Variablen
07.03.2017 08:55:29
littletramp
Hallo Nik
Wenn der erste Begriff nicht gefunden wurde, so suchst du halt nach dem zweiten. Genau so, wie du es manuel auch tun würdest.
    Set c = Rows(1).Find("*KW1", LookIn:=xlValues, lookat:=xlWhole)
If c Is Nothing Then
Set c = Rows(1).Find("*CWREQ1", LookIn:=xlValues, lookat:=xlWhole)
End If
If c Is Nothing Then
MsgBox "Nicht gefunden"
Else
MsgBox "Gefunden"
End If
Gruss Markus
Anzeige
AW: VBA - Range Find mit 2 Variablen
07.03.2017 09:26:33
Nik
Hallo Markus,
das ist natürlich ebenso plausibel wie perfekt gelöst :-) Hätte ich selber draufkommen müssen.
Vielen Dank an Dich für den Denkanstoß!
Gruß,
Nik
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

VBA - Range Find mit 2 Variablen


Schritt-für-Schritt-Anleitung

Um in Excel mit VBA nach mehreren Werten zu suchen, kannst du die Find-Methode nutzen. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Modul erstellen: Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsx)", wähle Einfügen und dann Modul.

  3. Code eingeben: Füge den folgenden Code ein:

    Dim c As Range
    Range("CZ2") = Date
    ' Aktuelle Kalenderwoche finden
    Set c = Rows(1).Find("*KW1", LookIn:=xlValues, lookat:=xlWhole)
    If c Is Nothing Then
       Set c = Rows(1).Find("*CWREQ1", LookIn:=xlValues, lookat:=xlWhole)
    End If
    If Not c Is Nothing Then
       Cells(1, c.Column).Activate
       ActiveCell.FormulaR1C1 = "=WEEKNUM(R[1]C104,21)"
    Else
       MsgBox "Keine der Spalten -KW1- oder -CWREQ1- wurde gefunden"
    End If
  4. Code ausführen: Schließe den VBA-Editor und führe den Code über F5 aus oder über ein zugewiesenes Makro.


Häufige Fehler und Lösungen

  • Fehler: "Spalte nicht gefunden"
    Dieser Fehler tritt auf, wenn weder KW1 noch CWREQ1 in der ersten Zeile vorhanden sind. Überprüfe, ob die Werte korrekt geschrieben sind.

  • Fehler: Ungültige Formel
    Wenn die Formel nicht korrekt ist, stelle sicher, dass die Zellreferenzen in ActiveCell.FormulaR1C1 richtig gesetzt sind.


Alternative Methoden

Wenn du eine umfassendere Suche durchführen möchtest, kannst du auch die Find-Methode innerhalb einer Schleife einsetzen:

Dim searchValues As Variant
Dim found As Boolean
searchValues = Array("*KW1", "*CWREQ1")
found = False

For Each value In searchValues
    Set c = Rows(1).Find(value, LookIn:=xlValues, lookat:=xlWhole)
    If Not c Is Nothing Then
        found = True
        Exit For
    End If
Next value

If found Then
    MsgBox "Gefunden: " & c.Value
Else
    MsgBox "Keiner der Werte wurde gefunden."
End If

Praktische Beispiele

  1. Suche nach mehreren Werten: Der oben gezeigte Code verwendet eine Schleife, um nach KW1 und CWREQ1 in der ersten Zeile zu suchen.
  2. Aktualisierung von Zellen: Du kannst den Code anpassen, um unterschiedliche Formeln basierend auf dem gefundenen Wert einzufügen.

Tipps für Profis

  • Nutze Option Explicit am Anfang deines Moduls, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Fehler zu vermeiden.

  • Verwende With-Anweisungen, um den Code übersichtlicher zu gestalten:

    With Rows(1)
       Set c = .Find("*KW1", LookIn:=xlValues, lookat:=xlWhole)
       If c Is Nothing Then
           Set c = .Find("*CWREQ1", LookIn:=xlValues, lookat:=xlWhole)
       End If
    End With
  • Erweitere die Suche, indem du eine Liste von Suchbegriffen in einem Array speicherst und diese durchgehst.


FAQ: Häufige Fragen

1. Kann ich auch nach mehr als zwei Werten suchen?
Ja, du kannst ein Array mit den Suchbegriffen erstellen und eine Schleife verwenden, um alle Werte zu überprüfen.

2. Was mache ich, wenn die Suche nichts findet?
Du kannst ein MsgBox-Fenster verwenden, um den Benutzer zu informieren, dass kein Wert gefunden wurde.

3. Welche Excel-Version benötige ich?
Der gezeigte VBA-Code funktioniert in Excel 2010 und höheren Versionen.

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