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

Forumthread: bedingte Formatierung als VBA möglich?

bedingte Formatierung als VBA möglich?
30.07.2024 13:25:24
Gerlinde
hallo

https://www.herber.de/bbs/user/171342.png
in der beigefügten darstellung sind in der bedingten formatierung formeln hinterlegt.
kann das, als bedingte formatierung dargestellte, auch als vba umgesetzt werden? wenn ja, wie?

danke und glg gerlinde
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Nachfrage
30.07.2024 13:30:41
UweD
Hallo

1) Meinst du das Setzen der Bedingten Formatierung mithilfe von VBA
2) oder soll VBA das Färben aufgrund der Formeln selbst übernehmen?


LG UweD
AW: bedingte Formatierung als VBA möglich?
30.07.2024 16:04:48
Gerlinde
hallo uwe,

hab´s nun probiert ... wenn ich zwischen H6:AMA6 einen wert in eine zelle schreibe, nur so färbt sich die zelle.
eine eingabe in c6, c7, ... hat keinen einfluss -> gerade dies wäre jedoch wichtig, da der wert in c6, ... definiert wie viele zellen gefärbt werden sollen

wird zb. c6 gerechnet wird eine erste farbe verwendet und die summe von c6 ergibt die menge / bzw position (erste) der zu füllenden zellen
wird zb. c6 + c7 gerechnet wird eine zweite farbe verwendet und die summe aus c6+c7 ergibt die menge / bzw position (zweite) der zu füllenden zellen
wird zb. c6 + c7 + c8 gerechnet wird eine dritte farbe verwendet und die summe aus c6+c7+c8 ergibt die menge / bzw position (dritte) der zu füllenden zellen

danke und glg gerlinde
Anzeige
AW: bedingte Formatierung als VBA möglich?
31.07.2024 13:55:53
schauan
Hallöchen,

Du schreibst, das da bei C6 usw. was gerechnet wird. Wird da auch was eingetragen?
Falls ja, sollte es reichen, diesen Teil
Set RNG = Range("H6:AMA6")
durch diesen zu ersetzen
Set RNG = Union(Range("C6:C8"), Range("H6:AMA6"))
AW: bedingte Formatierung als VBA möglich?
01.08.2024 11:34:08
Gerlinde
moinsen,

erstmal ... sorry leute, mein fehler. sorry. die vorlage von uwe funktioniert schon.

was mir jedoch in der VBA abgeht, ist im verlgeich zur bedingten formatierung, das bei änderung einer zahl sich der farbbalken automatisch mitverändert. ist das im VBA in gleicher weise umsetztbar wie in der bedingten formatierung?
ich habe euch ein beispiel beigefügt.
https://www.herber.de/bbs/user/171390.xlsm

'tschuldigung nochmals und danke

glg gerlinde
Anzeige
AW: bedingte Formatierung als VBA möglich?
02.08.2024 10:08:03
UweD
Hallo Gerlinde

So...
Der Code löst nun aus, wenn entweder in Bereich 1 oder in C6:C8 was geändert wird.
Es werden aber nur die Farben in Bereich 1 aktualisiert.

Private Sub Worksheet_Change(ByVal Target As Range)

Dim RNG1 As Range, RNG2 As Range, Z As Variant, Filling As String
Set RNG1 = Range("C6:C8")
Set RNG2 = Range("H6:AMA6")

If Not Intersect(Target, Union(RNG1, RNG2)) Is Nothing Then
For Each Z In RNG2
If Z = [C6] * 6 _
Then Filling = "Gr1"

If Z > [C6] * 6 _
Then Filling = "Gr2"

If Z > [C6] * 6 + [C7] * 6 _
Then Filling = "Gr3"

If Z > [C6] * 6 + [C7] * 6 + [C8] * 6 _
Then Filling = "Gr4"
'......usw


Select Case Filling
Case "Gr1"
Z.Interior.Color = 5296100

Case "Gr2"
Z.Interior.Color = 5296274

Case "Gr3"
Z.Interior.Color = 39423

Case "Gr4"
Z.Interior.Color = 16711935

Case "Or2"
With Z
.Interior.Color = 39423
.Borders(xlEdgeLeft).Weight = xlThin
.Borders(xlEdgeTop).Weight = xlThin
.Borders(xlEdgeBottom).Weight = xlThin
.Borders(xlEdgeRight).Weight = xlThin
End With
Case Else
'Nix
End Select
Next
End If
End Sub


LG UweD
Anzeige
bedingte Formatierung als VBA möglich?
05.08.2024 15:42:17
Gerlinde
Hallo UweD,

vielen Dank. Das hat sehr gut fuktioniert.
Mittlerweile habs ich etwas erweitert und somit habe ich auch eine weitere Frage. Dazu habe ich die geänderte Excel hochgeladen -> ansonsten versteht vermutlich niemand was ich da meine :)
https://www.herber.de/bbs/user/171455.xlsm

Mit dem nun neu eingefügten "Start 2" (-> Zelle C7) beginnt es wieder von neuem, jedoch um den hinterlegten Wert (C7) erhöht.
Zwischen dem Ende "Emp" und dem neuen Beginn mit "Start 2" darf es zu keiner Überschneidung kommen -> Kollision; direkt daran fortsetzt ja, überschneiden nein -> Kollision
Im Aktuell hinterlegten Beispiel sind hier zwei Einheiten (11 & 12) weiß und "Start 2" beginnt bei "13".

Nun zu meiner Frage: kann hier eine Abfrage erstellt werden, welche eine Kollision meldet (z.b. mittels MsgBox)?

GLG Gerlinde
Anzeige
bedingte Formatierung als VBA möglich?
06.08.2024 14:39:54
Gerlinde
Hallo,

mittlerweile sind ein paar Zeilen hinzugekommen und auch die Abfrage zur Kollision konnte ich integrieren. Datei anbei
https://www.herber.de/bbs/user/171473.xlsm

Allerdings habe ich eine weitere Frage, welche sich um Zeile ab H7 dreht.
Wie ihr im hinterlegten Beispiel erkennen könnt, beginnt mit Zelle BJ7 die Wiederholung vom vorangegangenen Abschnitt N7-BC7.
Wenn man den Wert von C11 auf 7 erhöht (damit sich die Ansicht aktuallisert, muss zB in C6 die vorhandene Zahl erneut eingegeben werden. Die Automatik läuft noch nicht ganz rund) erhält man die Kollisionswarnung. Gibt es eine Möglichkeit, dass in so einem Fall der Abschnitt ab BJ7 in die Zeile ab H8 verschoben wird?

GLG
Gerlinde
Anzeige
AW: Nachfrage
30.07.2024 13:43:25
Gerlinde
hallo uwed,

danke für deinen raschen reply.

vba soll das färben übernehmen ... wie du unter 2) geschrieben hast -> somit gänzlich ohne bedingter formatierung

z.b hinter $C$6 steht ein wert welcher die länge (=anzahl der spalten) der zu färbenden zellen bestimmt.

danke und glg gerlinde
Anzeige
AW: Nachfrage
30.07.2024 14:35:15
UweD
Hallo

du könntest das so in der Art verwirklichen (wobei das mit der Länge hab ich nicht verstanden und auch nicht mit eingebaut)

- Rechtsclick auf den Tabellenblattreiter
- Code anzeigen
- Rechts das hier rein kopieren

Bei Änderung einer Zelle im Bereich startet das Makro selbst.

Option Explicit


Private Sub Worksheet_Change(ByVal Target As Range)
Dim RNG As Range, Z As Variant, Filling As String
Set RNG = Range("H6:AMA6")

If Not Intersect(Target, RNG) Is Nothing Then
For Each Z In Target
If Z > [C7] * 6 _
Then Filling = "Gr1"

If Z > [C7] * 6 + [C6] * 6 _
Then Filling = "Gr2"

'......usw

If Z = [C6] * 6 _
Then Filling = "Gr1"

If Z > [C6] * 6 _
Then Filling = "Gr2"

If Z >= [C6] * 6 + [C10] * 10 _
Then Filling = "Or1"

'......usw

Select Case Filling
Case "Gr1"
Z.Interior.Color = 5296100

Case "Gr2"
Z.Interior.Color = 5296274

Case "Or1"
Z.Interior.Color = 39423

Case "Pi1"
Z.Interior.Color = 16711935

Case "Or2"
With Z
.Interior.Color = 39423
.Borders(xlEdgeLeft).Weight = xlThin
.Borders(xlEdgeTop).Weight = xlThin
.Borders(xlEdgeBottom).Weight = xlThin
.Borders(xlEdgeRight).Weight = xlThin
End With
Case Else
'Nix
End Select
Next
End If
End Sub



LG UweD
Anzeige
AW: Nachfrage
30.07.2024 15:03:22
Gerlinde
hallo uwed,

erstmal danke für den input. werde ich mir asap reinziehen und dir rückmeldung geben :)

bezüglich der länge ...
die zelle C6 (zb 3) definiert einen wert wie viele spalten mit einer definierten farbe befüllt werden sollen und in welchen bereich einer zeile das sein soll (zb $H$6:$AMA$6)
soll soviel heißen wie, dass in zeile 6, ab spalte h, ab einer stelle x, 3 spalten mit zb rot gefüllt werden (zb h6-h8 sind mit rot gefüllt)

zelle c6 dient nur zur exemplarischen veranschaulichung ...

danke und glg gerlinde
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige