251 Aufrufe
Gefragt in Tabellenkalkulation von
Hallo,

Wie könnte beim genannten Beispiel, noch einen Bereich der Aktiven Zelle eingefügt werden?

Ziel: nicht nur eine Zelle sondern einen Bereich farblich markieren.

Error: mit der Range Angabe funktioniert es bei mir nicht.

Option Explicit
Dim AlteFarbe As Integer, MarkierteZelle As String

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)

If Target.Count > 1 Then Exit Sub
ActiveSheet.Unprotect "Test"
If MarkierteZelle = "" Then
MarkierteZelle = Target.Address

AlteFarbe = Target.Range("A:F").Interior.ColorIndex
Target.Range("A:F").Interior.ColorIndex = 4

Else
If Range(MarkierteZelle).Range("A:F").Interior.ColorIndex = 4 Then
Range(MarkierteZelle).Target.Range("A:F").Interior.ColorIndex = AlteFarbe
End If
AlteFarbe = Target.Range("A:F").Interior.ColorIndex
MarkierteZelle = Target.Address
Target.Target.Range("A:F").Interior.ColorIndex = 4
End If
ActiveSheet.Protect "Test"
End Sub

schon mal... Vielen Dank für eure Unterstützung.

6 Antworten

0 Punkte
Beantwortet von

Guten Morgen,

ich bin nicht ganz sicher was Du genau erreichen willst, aber wenn es darum geht den Eingabe Range mit

A:F zu kombinieren würde das mit

Intersect(Target, Range("A:F")) anstelle von Target.Range("A:F"). gehen

(nimmt die Schnittmenge)

0 Punkte
Beantwortet von

Hallo, 

Vielen Dank für deinen Input mit Intersect hatte ich anfangs es auch probiert leider hatte es nicht funktioniert.

Mein Ziel ist wenn ich in eine im Bereich A1bis F250 klicke, dann soll die Zeile von A:F markiert werden ohne jedoch die ursprüngliche Formatierung zu löschen. Aus diesem Grund die AlteFarbe im Code, Gewisse Zelle sind Grau eingefärbt, deshalb kann es nicht mit ".Worksheet.Cells.Interior.ColorIndex = 0" die Farbe wieder zurück setzen. Die Graue Farbe gewisser Zellen soll auch danach noch vorhanden sein. Die Bedingte Formatierung soll nur angezeigt jedoch nicht gedruckt werden.

Besten Dank für eure Hilfe.

0 Punkte
Beantwortet von
Probiers mal mit

Option Explicit
Dim AlteFarbe(1 To 100) As Integer, AlteZeile As Long, MarkierteZelle As String, i As Long, j As Long

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Dim myCell
If Target.Count > 1 Then Exit Sub
ActiveSheet.Unprotect "Test"
If MarkierteZelle = "" Then
    MarkierteZelle = Target.Address
    If Intersect(Target, Range("A:F")) Is Nothing Then Exit Sub
    i = Intersect(Target, Range("A:F")).Row
    For j = 1 To 6
        AlteFarbe(j) = Cells(i, j).Interior.ColorIndex
    Next
    AlteZeile = i
    Range("A" & i & ":F" & i).Interior.ColorIndex = 4
    
Else
    If Cells(AlteZeile, 1).Interior.ColorIndex = 4 Then
        For j = 1 To 6
           Cells(AlteZeile, j).Interior.ColorIndex = AlteFarbe(j)
        Next
    End If
    MarkierteZelle = Target.Address
    If Intersect(Target, Range("A:F")) Is Nothing Then Exit Sub
    i = Intersect(Target, Range("A:F")).Row
    For j = 1 To 6
        AlteFarbe(j) = Cells(i, j).Interior.ColorIndex
    Next
    AlteZeile = i
    Range("A" & i & ":F" & i).Interior.ColorIndex = 4
End If

ActiveSheet.Protect "Test"
End Sub
0 Punkte
Beantwortet von
Guten Abend,

Besten Dank für deine Antwort.

Das Problem mit diesem Code ist, dass die Formatierung nicht mehr zurückgesetzt wird.

Wenn ich 5 Zeilen anklicke werden die 5 Zeilen farbig, zudem wird das Blatt gesperrt eine Bearbeitung

ist nicht mehr möglich.
0 Punkte
Beantwortet von

Die Sperre hatte ich nur aus dem Code oben übernommen -

 die kann man ja auch  leicht wieder entfernen bzw. auskommentieren

'ActiveSheet.Unprotect "Test"

'ActiveSheet.Protect "Test"

Warum sich allerdings fünf Zeilen auf einmal färben ist mir unerklärlich, bei mir machen sie das nicht und sollten aus auch nicht können (If Target.Count > 1 Then Exit Sub)

Bei mir wird auch die alte Formatierung wieder hergestellt (außer ich verwende Schattierungen von Designfarben, dann passt es nicht 100% ig - da wird es meist heller/dünkler da müsste man wahr. noch nachbessern)

0 Punkte
Beantwortet von

Hallo, 

Wenn ich folgenden Code auskommentiere, funktioniert der Code bei mir nicht mehr.

'ActiveSheet.Unprotect "Test"

'ActiveSheet.Protect "Test"

In einer leeren Datei führte aus nicht mehr zu den Einfrierungen der zusätzlichen Zeilen. Das Problem wurde bei mir wahrscheinlich verursacht durch zu viele offene Dateien, wenn ich nur diese Datei offen habe kommt es auch nicht mehr zu dem Fehlen. 

Vielen Dank!

...