Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

In Quellcode aus Zelle Zellbereich machen
#1
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
Antworten Top
#2
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
Antworten Top
#3
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.
Antworten Top
#4
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
[-] Folgende(r) 1 Nutzer sagt Danke an Niclaus für diesen Beitrag:
  • Smiling
Antworten Top
#5
Dankeschön 

das funktioniert jetzt nach meinen Wünschen.
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste