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

Forumthread: VBA If Funktion mit Inhaltssuche in Target Feld

VBA If Funktion mit Inhaltssuche in Target Feld
Michael
Hallo zusammen,
ich habe mein erstes kleines VBA Makro geschrieben (siehe unten). Soweit funktioniert auch alles. Allerdings habe ich jetzt das Problem das ich im Target nicht nach einem fest definierten Inhalt sondern nach einem bestimmten Wort ("dedicated") suchen möchte. Vielleicht sollte ich noch sagen dass Target über ein DropDown gefüllt wird. Hier mein Erstlingswerk:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Wks As Worksheet
Set Wks = ActiveSheet
If Target.Address = "$B$16" Then
Wks.Unprotect "xxx"
If Target = "no SDE in place (dedicated)" Then 'Zellen B20 bis B28 schreibar
Range("$B$20:$B$28").Locked = False
Else
Range("$B$20:$B$28").Locked = True
End If
Wks.Protect "xxx"
End If

Ich hoffe ihr könnt mir weiterhelfen.
Gruß
Michael
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: VBA If Funktion mit Inhaltssuche in Target Feld
28.01.2011 08:09:32
sergiesam
Hallo Michael,
du kannst den Like-Operator oder Instr-Funktion verwenden.
z.B.
if target.value like "*dedicated*" then...
oder
if instr(target.value, "dedicated")>0 then....
lg,
Sam
AW: VBA If Funktion mit Inhaltssuche in Target Feld
28.01.2011 08:21:03
Michael
Hi Sam,
bin begeistert. Habe zwar nicht ganz kapiert was

>0
aussagt, funktioniert aber super.
Danke und schönen Tag.
Gruß
Michael
Anzeige
AW: VBA If Funktion mit Inhaltssuche in Target Feld
28.01.2011 08:30:28
sergiesam
hallo Michael,
die Instr-Funktion gibt dir die Position des Vorkommens deines Textes an.
z.B. bei "Hallo Michael" würde Instr("Hallo Michael", "Michael") den Wert 7 zurückgeben, da Michael ab der 7. Stelle zu finden ist. Wenn ich also nach > 0 abfrage, weiß ich, dass der Wert vorkommt.
Achte aber auf die Groß und Kleinschreibweise.
Wenn diese nicht relevant sein soll musst du folgendes schreiben:
If instr(1, "Hallo Michael", "michael",vbTextCompare) > 0 then
lg,
Sam
Anzeige
;

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 If Funktion mit Inhaltssuche im Target Feld


Schritt-für-Schritt-Anleitung

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

  2. Wähle das richtige Arbeitsblatt: Doppelklicke auf das Arbeitsblatt, in dem Du die Funktion implementieren möchtest.

  3. Füge den Code ein: Verwende den folgenden Code, um die If-Funktion mit einer Inhaltssuche zu implementieren:

    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim Wks As Worksheet
        Set Wks = ActiveSheet
    
        If Target.Address = "$B$16" Then
            Wks.Unprotect "xxx"
            If Target.Value Like "*dedicated*" Then
                Range("$B$20:$B$28").Locked = False
            Else
                Range("$B$20:$B$28").Locked = True
            End If
            Wks.Protect "xxx"
        End If
    End Sub
  4. Ersetze "xxx": Stelle sicher, dass Du das Passwort für die Schutzfunktion anpasst.

  5. Teste die Funktion: Ändere den Wert im DropDown-Feld und beobachte, ob die Zellen B20 bis B28 entsprechend gesperrt oder entsperrt werden.


Häufige Fehler und Lösungen

  • Fehler: "Objektvariable oder With-Blockvariable nicht gesetzt"

    • Lösung: Stelle sicher, dass Du das Arbeitsblatt korrekt referenzierst. Überprüfe, ob Set Wks = ActiveSheet richtig konfiguriert ist.
  • Fehler: Der Wert wird nicht erkannt

    • Lösung: Achte darauf, dass Du die Groß- und Kleinschreibung berücksichtigst. Verwende vbTextCompare, wenn die Großschreibung ignoriert werden soll:
    If InStr(1, Target.Value, "dedicated", vbTextCompare) > 0 Then

Alternative Methoden

Eine alternative Methode zur Überprüfung des Inhalts im Target-Feld ist die Verwendung der InStr-Funktion. Diese Methode gibt die Position des gesuchten Textes zurück und kann wie folgt implementiert werden:

If InStr(Target.Value, "dedicated") > 0 Then

Diese Methode ist besonders nützlich, wenn Du nach mehreren möglichen Wörtern suchen möchtest.


Praktische Beispiele

Hier sind einige Beispiele, wie Du die If-Funktion in Kombination mit dem Target-Objekt in verschiedenen Szenarien verwenden kannst:

  1. Mehrere Bedingungen:

    If Target.Value Like "*dedicated*" Or Target.Value Like "*shared*" Then
        ' Aktionen für dedizierte oder geteilte Ressourcen
    End If
  2. Benutzerdefinierte Nachrichten:

    If InStr(Target.Value, "dedicated") > 0 Then
        MsgBox "Dedizierte Ressource ausgewählt!"
    End If

Tipps für Profis

  • Verwende Option Explicit: Füge Option Explicit am Anfang jedes Moduls hinzu, um sicherzustellen, dass alle Variablen deklariert werden. Dies hilft, Fehler zu vermeiden.

  • Kommentiere Deinen Code: Kommentiere Deine VBA-Programmierung gründlich, damit Du später leichter nachvollziehen kannst, was jeder Teil des Codes bewirken soll.

  • Optimiere die Performance: Deaktiviere das Bildschirm-Update während der Ausführung des Codes:

    Application.ScreenUpdating = False
    ' Dein Code hier
    Application.ScreenUpdating = True

FAQ: Häufige Fragen

1. Wie kann ich mehrere Suchbegriffe gleichzeitig prüfen?
Du kannst die Or-Bedingung in Deiner If-Abfrage verwenden, um mehrere Suchbegriffe zu kombinieren:

If Target.Value Like "*dedicated*" Or Target.Value Like "*shared*" Then

2. Was ist der Unterschied zwischen Like und InStr?
Like verwendet Platzhalter für die Mustererkennung, während InStr die Position des gesuchten Textes innerhalb eines Strings zurückgibt. Beide sind nützlich, abhängig von Deinen Anforderungen.

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