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

Target begrenzen auf Bereich und einzelne Zelle

Forumthread: Target begrenzen auf Bereich und einzelne Zelle

Target begrenzen auf Bereich und einzelne Zelle
15.11.2005 09:14:20
Thomas
Hallo
Ich habe eine Funktion, die überwacht ob ein bestimmter Buchstabe in "eine" Zelle eingegeben wurde und verändert dann entsprechend die Hintergrundfarbe. Das ganze ist in etwa wie eine bedingte Formatierung mit mehr als 3 Bedingungen.
&ltpre&gt
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Value = "l" Then
Target.Value = "L"
Target.Interior.ColorIndex = 22
End If
If Target.Value = "u" Then
Target.Value = "U"
Target.Interior.ColorIndex = 5
End If
If Target.Value = "k" Then
Target.Value = "K"
Target.Interior.ColorIndex = 3
End If
If Target.Value = "d" Then
Target.Value = "D"
Target.Interior.ColorIndex = 6
End If
If Target.Value = "a" Then
Target.Value = "A"
Target.Interior.ColorIndex = 7
End If
If Target.Value = "v" Then
Target.Value = "V"
Target.Interior.ColorIndex = 17
End If
End Sub&lt/pre&gt
Das ganze soll zum einen nur auf einen bestimmten Bereich angewendet werden und zum anderen immer nur auf "eine" Zelle. z.Z. ist es so, wenn ich mehrere Zellen kopiere und wo anders einfüge, erhalte ich einen Laufzeitfehler und der Debugger bleibt in der ersten Zelle (If Target.Value = "l" Then)hängen. Dasselbe tritt auf, wenn sich die Inhalte mehrerer Zellen verändern. Was muß ich tun, damit der Laufzeitfehler nicht auftritt, oder kann man die Ausgabe des Fehlers blockieren?
Gruß Thomas
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Target begrenzen auf Bereich und einzelne Zelle
15.11.2005 09:27:48
Stefan
Hallo,
willst du nur auf die erste Zelle zugreifen, mußt du wie folgt verfahren:
select case Target(1,1)
case "I"
Target(1,1).Interior.ColorIndex = ...
...
Gruß Stefan
AW: Target begrenzen auf Bereich und einzelne Zelle
15.11.2005 09:30:04
Heiko
Hallo Thomas,
so könnte es gehen, bei soviel if´s bietet sich die Select Case Methode an

Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngUnion As Range, rngUBereich As Range
' Abfangen mehr als eine Zelle
If Target.Count > 1 Then Exit Sub
' nur für einen bestimmten Bereich.
Set rngUBereich = Range("A1:D40")  ' Oder auch "A1:A20,C1:C20" oder "A1:A100" ...
Set rngUnion = Application.Union(Range(Target.Address), rngUBereich)
If rngUnion.Address <> rngUBereich.Address Then Exit Sub
Select Case Target.Value
Case "l"
Target.Value = "L"
Target.Interior.ColorIndex = 22
Case "u"
Target.Value = "U"
Target.Interior.ColorIndex = 5
Case "k"
Target.Value = "K"
Target.Interior.ColorIndex = 3
Case "d"
Target.Value = "D"
Target.Interior.ColorIndex = 6
Case "a"
Target.Value = "A"
Target.Interior.ColorIndex = 7
Case "v"
Target.Value = "V"
Target.Interior.ColorIndex = 17
End Select
End Sub

Gruß Heiko
PS: Rückmeldung wäre nett !
Anzeige
AW: Target begrenzen auf Bereich und einzelne Zell
15.11.2005 09:37:16
Thomas
Spitze. Das funktioniert super.
:):):)
Danke
Gruß Thomas
;
Anzeige
Anzeige

Infobox / Tutorial

Target begrenzen auf Bereich und einzelne Zelle in Excel


Schritt-für-Schritt-Anleitung

Um die Eingabe in einer bestimmten Zelle zu überwachen und die Hintergrundfarbe zu ändern, kannst du den folgenden VBA-Code verwenden. Dieser Code sorgt dafür, dass nur eine Zelle in einem definierten Bereich überwacht wird, und verhindert Laufzeitfehler bei der Eingabe mehrerer Zellen.

  1. Öffne Excel und drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.
  2. Wähle das Arbeitsblatt aus, in das du den Code einfügen möchtest.
  3. Füge den folgenden Code in das Codefenster ein:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rngUnion As Range, rngUBereich As Range
    ' Abfangen mehr als eine Zelle
    If Target.Count > 1 Then Exit Sub
    ' nur für einen bestimmten Bereich.
    Set rngUBereich = Range("A1:D40")  ' Oder auch "A1:A20,C1:C20" oder "A1:A100" ...
    Set rngUnion = Application.Union(Range(Target.Address), rngUBereich)
    If rngUnion.Address <> rngUBereich.Address Then Exit Sub
    Select Case Target.Value
        Case "l"
            Target.Value = "L"
            Target.Interior.ColorIndex = 22
        Case "u"
            Target.Value = "U"
            Target.Interior.ColorIndex = 5
        Case "k"
            Target.Value = "K"
            Target.Interior.ColorIndex = 3
        Case "d"
            Target.Value = "D"
            Target.Interior.ColorIndex = 6
        Case "a"
            Target.Value = "A"
            Target.Interior.ColorIndex = 7
        Case "v"
            Target.Value = "V"
            Target.Interior.ColorIndex = 17
    End Select
End Sub
  1. Schließe den VBA-Editor und teste die Funktion, indem du Werte in den definierten Bereich eingibst.

Häufige Fehler und Lösungen

  • Laufzeitfehler beim Einfügen mehrerer Zellen:

    • Stelle sicher, dass der Code so angepasst ist, dass er nur auf eine Zelle reagiert (siehe If Target.Count > 1 Then Exit Sub).
  • Die Hintergrundfarbe ändert sich nicht:

    • Überprüfe, ob der eingegebene Wert im Select Case-Block korrekt ist und ob die Zelle im festgelegten Bereich liegt.

Alternative Methoden

Du kannst auch die Target Methode verwenden, um die Werte direkt zu ändern, ohne die Zelle mehrfach ansprechen zu müssen. Eine andere Möglichkeit ist die Nutzung von Excel-Formeln, um die Eingaben zu analysieren, obwohl dies nicht die gleiche Flexibilität wie ein VBA-Skript bietet.


Praktische Beispiele

Wenn du beispielsweise die Eingabe in Zelle A1 überwachen möchtest, kannst du den oben genannten VBA-Code verwenden, um die Farben für bestimmte Buchstaben zu ändern.

Ein weiteres Beispiel: Um maximalen Werte in Excel zu begrenzen, könntest du eine Formel verwenden wie:

=MIN(A1, 100)

Diese Formel begrenzt den Wert in A1 auf maximal 100.


Tipps für Profis

  • Nutze die Select Case Methode, um deinen Code übersichtlicher zu gestalten, besonders wenn du viele Bedingungen hast.
  • Halte deinen Code modular, indem du häufig verwendete Funktionen in separate Subroutinen auslagern.
  • Teste deine VBA-Skripte gründlich, um sicherzustellen, dass sie in allen Szenarien wie gewünscht funktionieren.

FAQ: Häufige Fragen

1. Wie kann ich den Code anpassen, um mehrere Bereiche zu überwachen?
Du musst die Set rngUBereich-Zeile anpassen, um mehrere Bereiche wie "A1:A20,C1:C20" anzugeben.

2. Gibt es eine Möglichkeit, die Hintergrundfarbe bei Eingabefehlern zurückzusetzen?
Ja, du kannst im Select Case-Block eine Else-Bedingung hinzufügen, um die Hintergrundfarbe auf eine Standardfarbe zurückzusetzen, wenn die Eingabe nicht erkannt wird.

3. Welche Excel-Version benötige ich für diesen VBA-Code?
Der Code sollte in den meisten modernen Excel-Versionen funktionieren, einschließlich Excel 2010 bis 2021 und Excel 365.

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