Clever-Excel-Forum

Normale Version: In Quellcode aus Zelle Zellbereich machen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

Ich habe eine Excel datei in der sich meherer Tabellenblätter befinden. Fast das gesamte (jedes) Tabellenblatt ist geschützt. Außer ein Zellbereich in dem Werte eingegeben werden sollen.

Immer wenn in diesem Bereich Werte eingegeben werden soll sich die registerkarte färben.

Für eine Zelle habe ich dies bereits hinbekommen.

Code:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = ("$B$9") And Target <> "" Then
        ActiveSheet.Tab.Color = RGB(255, 0, 0)
        Else
        ActiveSheet.Tab.Color = RGB(0, 0, 0)
    End If
End Sub

Wie bekomme ich es jetzt hin das nicht nur die Zelle B9 kontrolliert wird sondern der Bereich von B9 bis B334? Huh Huh
Hallo
So könnte es funktionieren:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    Set Target = Intersect(Target, Range("B9:B334"))
        If Target Is Nothing Then Exit Sub
    srange = Selection.Cells.Count
        If srange > 1 Then
            MsgBox "Es darf nur eine einzelne Zelle aktiviert sein!"
            Exit Sub
        End If
    If Target <> "" Then
        ActiveSheet.Tab.Color = RGB(255, 0, 0)
    Else
        ActiveSheet.Tab.Color = RGB(0, 0, 0)
    End If
End Sub

Wenn Du in der Spalte B mehr als eine Zelle auswählst und eine Eingabe machst oder die DEL-Taste drückst, kommt es zu einem Laufzeitfehler. Deshalb die Bedingung mit srange.
Grüsse Niclaus
Hallo Niclaus,

danke für die schnelle Antwort. 
Die Überwachung für mehrere Zellen passt soweit.

Aber jetzt habe ich das Problem das die 2. Farbe schon eingestellt werde, wenn ich nur eine Zelle im Bereich lösche.
Die Farbe sollte sich aber erst wieder auf die 2. Farbe ändern wenn der gesamte Bereich leer ist.
Dann versuch's mal so

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
Set bereich = Range("B9:B334")
Set Target = Intersect(Target, bereich)
    If Target Is Nothing Then Exit Sub
a = Application.WorksheetFunction.CountA(bereich)
    If a = 0 Then
        ActiveSheet.Tab.Color = RGB(0, 0, 0)
        Exit Sub
    End If
If Target <> "" Then
    ActiveSheet.Tab.Color = RGB(255, 0, 0)
End If
End Sub

Mit diesem Code spielt es keine Rolle, ob Du mehrere Zellen oder nur eine markiert hast.
Ich hoffe, das funktioniert bei Dir.
Grüsse Niclaus
Dankeschön 

das funktioniert jetzt nach meinen Wünschen.