Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.04.2024 18:33:31
28.04.2024 18:25:12
28.04.2024 14:18:05
Anzeige
Archiv - Navigation
1908to1912
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Zellenrahmen färben
13.12.2022 10:18:13
Nikl
Hallo zusammen,
ich habe in meiner Excel-Datei dick umrandete Zellen.
Gerne würde ich diese, wenn sie vom Bearbeiter ausgefüllt wurden schwarz färben. Vorher sollen sie bei noch keinem Eintrag rot umrandet sein, damit der Bearbeiter sieht, dass noch Werte eingetragen werden müssen.
Mit bedingter Formatierung funktioniert das ganze leider nicht, da ich aufgrund der Optik die dicken Rahmenlinien behalten möchte.

Dim Zelle As Range
For Each Zelle In Range("D7,D5,E6:G6,D8:G8,D9,D10")
If Zelle.Value > 0 Then
Zelle.Select
With Selection.Borders(xlEdgeLeft)
.Color = RGB(255, 0, 0)
End With
With Selection.Borders(xlEdgeTop)
.Color = RGB(255, 0, 0)
End With
With Selection.Borders(xlEdgeBottom)
.Color = RGB(255, 0, 0)
End With
With Selection.Borders(xlEdgeRight)
.Color = RGB(255, 0, 0)
End With
End If
Next Zelle
Das ist mein bisheriger Versuch. Das ganze soll über SelectionChange laufen.
Mit freundlichen Grüßen
Nikl

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellenrahmen färben
13.12.2022 10:41:34
onur
"Das ganze soll über SelectionChange laufen." ist Quatsch, da das bei Ändern der Zelle passieren muss. SelectionChange wird ausgeführt, nachdem die Zelle bereits verlassen wurde.

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("D7,D5,E6:G6,D8:G8,D9,D10")) Is Nothing Then Exit Sub
With Target
.Borders(xlEdgeLeft).Color = RGB(0, 0, 0)
.Borders(xlEdgeTop).Color = RGB(0, 0, 0)
.Borders(xlEdgeBottom).Color = RGB(0, 0, 0)
.Borders(xlEdgeRight).Color = RGB(0, 0, 0)
End With
End Sub

AW: Zellenrahmen färben
13.12.2022 11:23:34
Nikl
Hallo,
hilft mir leider wenig weiter...
Bei RBG(0,0,0) wird mir eine Fehlermeldung angezeigt.
Zusätzlich soll ja für jede Zelle geprüft werden, ob bereits gefüllt oder nicht und der Rahmen dann je nachdem rot oder schwarz gefärbt werden.
Zellen haben aber bereits einen schwarzen dicken rahmen eingestellt im Vorfeld.
Anzeige
AW: Zellenrahmen färben
13.12.2022 11:27:37
onur
1) Du hast den Code wohl gar nicht verstanden - es macht geanau das, was er soll.
2) Es heisst RGB undg nicht RBG.
AW: Zellenrahmen färben
13.12.2022 11:28:47
onur
Verstehen brauchst du den Code aber nicht - Kopieren (nicht abtippen!) - Einfügen - Fertig.
AW: Zellenrahmen färben
13.12.2022 11:29:58
Rudi
Hallo,
noch eine Möglichkeit:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim lngCOLOR As Long, i As Integer
If Not Intersect(Target, Range("D7,D5,E6:G6,D8:G8,D9,D10")) Is Nothing Then
lngCOLOR = IsEmpty(Target) * -255
With Target
For i = 7 To 10
.Borders(i).Color = lngCOLOR
Next i
End With
End If
End Sub

Anzeige
AW: Zellenrahmen färben
13.12.2022 11:53:18
Nikl
Hallo,
schon einmal danke für die Hilfe. Jedoch wird bei .Borders(i).Color = lngCOLOR eine Fehlermeldung ausgeworfen.
Zudem werden die verbundenen Zellen nicht rot eingefärbt.
Beispieldatei hier: https://www.herber.de/bbs/user/156695.xlsm
AW: Zellenrahmen färben
13.12.2022 12:40:18
Rudi
auch für verbundene Zellen:

 Private Sub Worksheet_Change(ByVal Target As Range)
Dim lngCOLOR As Long, i As Integer
If Not Intersect(Target, Range("D7,D5,E6:G6,D8:G8,D9,D10")) Is Nothing Then
lngCOLOR = (Application.CountA(Target) = 0) * -255
With Target(1).MergeArea
For i = 7 To 10
With .Borders(i)
.Color = lngCOLOR
.LineStyle = xlContinuous
.Weight = xlMedium
End With
Next i
End With
End If
End Sub

Anzeige
AW: Zellenrahmen färben
14.12.2022 08:23:37
Nikl
Hallo,
ich melde mich noch einmal zu diesem Thema.
Hier der aktuelle Code:

Dim i As Integer
If Intersect(Target, Range("D7,D5,E6:G6,D8:G8,D9,D10")) Is Nothing Then
With Target(1).MergeArea
For i = 7 To 10
With .Borders(i)
.Color = vbRed
.LineStyle = xlContinuous
.Weight = xlMedium
End With
Next i
End With
ElseIf Range("D7,D5,E6:G6,D8:G8,D9,D10").Value  "" Then
With Target(1).MergeArea
For i = 7 To 10
With .Borders(i)
.Color = vbBlack
.LineStyle = xlContinuous
.Weight = xlMedium
End With
Next i
End With
End If

Und unter diesem Link die Beispieltabelle: https://www.herber.de/bbs/user/156695.xlsm
Meine Vorstellung zur Funktion:
Es soll überprüft werden ob die Zellen D5, E6:G6, D7,D8:G8, D9 und D10 gefüllt sind.
- Falls jeweilige Zelle nicht gefüllt soll diese einen roten rahmen haben
- Wenn Zelle gefüllt Rahmen von rot auf schwarz ändern
Die Zellen haben jedoch, wie in der Beispieldatei zu sehen, bereits einen schwarzen rahmen hinterlegt.
Vielen dank für die Hilfe!
Anzeige
siehe 14.12.2022 11:03:19. owT
14.12.2022 14:29:28
Rudi

106 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige