VBA If Funktion mit Inhaltssuche im Target Feld
Schritt-für-Schritt-Anleitung
-
Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.
-
Wähle das richtige Arbeitsblatt: Doppelklicke auf das Arbeitsblatt, in dem Du die Funktion implementieren möchtest.
-
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
-
Ersetze "xxx": Stelle sicher, dass Du das Passwort für die Schutzfunktion anpasst.
-
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:
-
Mehrere Bedingungen:
If Target.Value Like "*dedicated*" Or Target.Value Like "*shared*" Then
' Aktionen für dedizierte oder geteilte Ressourcen
End If
-
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.