Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1616to1620
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
Inhaltsverzeichnis

Bedingte Formatierung per VBA

Bedingte Formatierung per VBA
13.04.2018 11:31:57
Domi
Hallo Liebes Forum,
bis jetzt war ich immer nur passiver Leser aber jetzt habe ich zum ersten mal keine Lösung für mein Problem gefunden.
Ich habe eine bedingte Formatierung (BF) via VBA: (ausschnitt aus dem Code)

With Target
If .Rows.Count > 1 Or .Columns.Count > 1 Then Exit Sub
If Application.Intersect(Range("H:H"), Target) Is Nothing Then Exit Sub
If .Value 

In Spalte H ist eine Simple Multiplikation mit einer Formel hinterlegt:
=WENN(G22*F220;G22*F22;"")
wenn jetzt die Formel einen Wert ausspuckt greift die BF nicht automatisch. Das funktioniert nur wenn ich per Mauspull die Formel für die Zeile "aktualisiere".
Was mach ich falsch?
Danke im Voraus für eure Hilfe
LG Domi

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bedingte Formatierung per VBA
13.04.2018 11:39:44
EtoPHG
Hallo,
Bitte: Immer vollständigen Code!
Die Helfer stochern ungern im Nebel!
Ziemlich sicher benutzt du das _Change Ereignis. Das wird nur bei manueller Zelländerung angestossen. Änderungen der Zellinhalte durch Formeln kannst du theoretisch nur im _Calculate Ereignis 'abfangen', oder du beobachtest Zellen die durch manuelle Änderung, die Formelresultate beieinflussen!
Gruess Hansueli
AW: Bedingte Formatierung per VBA
13.04.2018 12:10:32
Domi
Sorry,
Korrekt ich habe mit dem _Change Eregnis gearbeitet.
Zur Eingabe: Ich nutze in Spalte F (6) und G (7) Manuelle Eingaben und in H wie gesagt die Formel.
Brauche ich dann zwei verschiedene Subs?
Danke für deine Hilfe!
Hier der volsltändige Code:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 6 Then
Select Case Target.Value
Case "1": Range(Cells(Target.Row, 6), Cells(Target.Row, 6)).Interior.ColorIndex = 43
Case "2": Range(Cells(Target.Row, 6), Cells(Target.Row, 6)).Interior.ColorIndex = 44
Case "3": Range(Cells(Target.Row, 6), Cells(Target.Row, 6)).Interior.ColorIndex = 45
Case "4": Range(Cells(Target.Row, 6), Cells(Target.Row, 6)).Interior.ColorIndex = 9
Case Else: Range(Cells(Target.Row, 6), Cells(Target.Row, 6)).Interior.ColorIndex = xlNone
End Select
End If
If Target.Column = 7 Then
Select Case Target.Value
Case "1": Range(Cells(Target.Row, 7), Cells(Target.Row, 7)).Interior.ColorIndex = 43
Case "2": Range(Cells(Target.Row, 7), Cells(Target.Row, 7)).Interior.ColorIndex = 44
Case "3": Range(Cells(Target.Row, 7), Cells(Target.Row, 7)).Interior.ColorIndex = 45
Case "4": Range(Cells(Target.Row, 7), Cells(Target.Row, 7)).Interior.ColorIndex = 9
Case Else: Range(Cells(Target.Row, 7), Cells(Target.Row, 7)).Interior.ColorIndex = xlNone
End Select
End If
With Target
If .Rows.Count > 1 Or .Columns.Count > 1 Then Exit Sub
If Application.Intersect(Range("H:H"), Target) Is Nothing Then Exit Sub
If .Value 

Anzeige
...und in H wie gesagt die Formel. Zeig sie! (owT)
13.04.2018 13:48:51
EtoPHG

AW: ...und in H wie gesagt die Formel. Zeig sie! (owT)
13.04.2018 13:59:57
Domi
Ich glaube ich komme mit der Art des Forums nicht so ganz klar :D sorry,
Die Formel hab ich im ersten Beitrag geschrieben. Also nochmal hier Code und Formel:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 6 Then
Select Case Target.Value
Case "1": Range(Cells(Target.Row, 6), Cells(Target.Row, 6)).Interior.ColorIndex = 43
Case "2": Range(Cells(Target.Row, 6), Cells(Target.Row, 6)).Interior.ColorIndex = 44
Case "3": Range(Cells(Target.Row, 6), Cells(Target.Row, 6)).Interior.ColorIndex = 45
Case "4": Range(Cells(Target.Row, 6), Cells(Target.Row, 6)).Interior.ColorIndex = 9
Case Else: Range(Cells(Target.Row, 6), Cells(Target.Row, 6)).Interior.ColorIndex = xlNone
End Select
End If
If Target.Column = 7 Then
Select Case Target.Value
Case "1": Range(Cells(Target.Row, 7), Cells(Target.Row, 7)).Interior.ColorIndex = 43
Case "2": Range(Cells(Target.Row, 7), Cells(Target.Row, 7)).Interior.ColorIndex = 44
Case "3": Range(Cells(Target.Row, 7), Cells(Target.Row, 7)).Interior.ColorIndex = 45
Case "4": Range(Cells(Target.Row, 7), Cells(Target.Row, 7)).Interior.ColorIndex = 9
Case Else: Range(Cells(Target.Row, 7), Cells(Target.Row, 7)).Interior.ColorIndex = xlNone
End Select
End If
With Target
If .Rows.Count > 1 Or .Columns.Count > 1 Then Exit Sub
If Application.Intersect(Range("H:H"), Target) Is Nothing Then Exit Sub
If .Value 
Formel in Spalte H (Zeile 51): =WENN(G51*F510;G51*F51;"")
Und das Problem ist, dass in Spalte F & G bei manueller Eingabe zwar die Richtige Farbe hinterlegt wird, aber bei der Formel in Spalte H nur das Ergebnis und nicht automatisch auch die Farbe hinterlegt wird.
Anzeige
AW: ...und in H wie gesagt die Formel. Zeig sie! (owT)
13.04.2018 15:24:43
EtoPHG
Hallo Domi,
Entschuldige, aber ich hab in der Eile deine Formel übersehen.
Also, dieser Code sollte eigentlich Deine Bedürfnisse abdecken:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cWithFormula As Range
If Target.Count > 1 Then Exit Sub
If Target.Column = 6 Or Target.Column = 7 Then
Select Case Target
Case 1: Target.Interior.ColorIndex = 43
Case 2: Target.Interior.ColorIndex = 44
Case 3: Target.Interior.ColorIndex = 45
Case 4: Target.Interior.ColorIndex = 9
Case Else: Target.Interior.ColorIndex = xlNone
End Select
Set cWithFormula = Target.Offset(, IIf(Target.Column = 6, 2, 1))
Select Case cWithFormula
Case Is 
Gruess Hansueli
Anzeige
AW: ...und in H wie gesagt die Formel. Zeig sie! (owT)
16.04.2018 08:53:13
Domi
Klasse funktioniert wie vorhergesagt. Wenn du die Zeit findest könntest du mir die eine Zeile erklären?
Set cWithFormula = Target.Offset(, IIf(Target.Column = 6, 2, 1))
Ansonsten vielen Dank für deine Hilfe!! (Chef zufriedengestellt :P)
Beste grüße aus Bayern
Domi
AW: ...und in H wie gesagt die Formel. Zeig sie! (owT)
16.04.2018 11:32:58
EtoPHG
Hallo Domi,
Die Codezeile macht folgendes:
Sie setzt die Zelle in der sich die Formel befindet, je in welcher Spalte die Eingabe erfolgte, d.h. Eingabe in F (Spalte 6), dann 2 Spalten nach rechts, sonst eine Spalte nach rechts.
Gruess Hansueli
AW: ...und in H wie gesagt die Formel. Zeig sie! (owT)
16.04.2018 15:18:39
Domi
Hey Hansueli,
nochmals 1000 Dank.. da wäre ich im Leben nicht drauf gekommen :D
schönen Tag noch und bis zum nächsten Problem.
LG Domi
Anzeige

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige