Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 11:16:26
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Variable in Formel für die bedingte Formatierung

Variable in Formel für die bedingte Formatierung
31.07.2024 12:47:44
Thies01
Hallo,

ich bin in dem VBA-Thema noch sehr neu und baue gerade an einer Tabelle mit einem Fragebogen zur Bewertung von Arbeitsabläufen hinsichtlich der Digitalisierung. Die Tabelle hat ein Tabellenblatt mit Erläuterungen, ein Tabellenblatt mit dem Fragebogen und eins mit den Ergebnis.

Zwei der Fragen auf dem Fragebogen werden jedoch möglicherweise mit n/a beantwortet, weil die Frage nicht auf den Arbeitsablauf zutrifft. Dadurch gibt es unterschiedliche maximale Gesamtpunktzahlen.

Auf dem Tabellenblatt mit dem Ergebnis werden für die Antworten Punkte vergeben und diese zusammengezählt. Für das Summen-Feld habe ich vier bedingte Formatierungen gebaut. Einmal eine bedingte Formatierung für eine Farbskala und drei Bedingte Formatierungen um hinter der Summe die mögliche Gesamtpunktzahl stehen zu haben (Beispiel: "SummePunkte von 29").
Bei der bedingten Formatierung mit der Farbskala habe ich beim Mittelwert und Maximum jeweils eine Wenn-Formel eingebaut um die unterschiedlichen Gesamtpunktzahlen zu berücksichtigen und bei den anderen bedingten Formatierungen sind es Regeln die jeweils eine Formel nutzen ob sie angewendet werden.

Jetzt ist es aber so, dass man in der Tabellen vielleicht nicht nur einen Arbeitsablauf bewerten möchte sondern mehrere. Dafür habe ich eine Button eingebaut, welcher mit Makros einen neues Tabellenblatt mit dem Fragebogen und einen neuen Abschnitt auf dem Tabellenblatt mit den Ergebnissen hinzufügt.

Ich möchte jedoch auch, dass ein neu eingefügtes Summenfeld auf dem Ergebnisblatt auch mit bedingten Formatierungen wie eben beschrieben formatiert wird. Folgenden Code habe ich für die erste Formatierung des Textes bisher:



Sub testbedingte()
Dim frage50 As Integer
Dim frage120 As Integer
Dim formula As String

zusätzlichefragebögen = Sheets.Count - 3

frage50 = (zusätzlichefragebögen * 17) + 7
frage120 = (zusätzlichefragebögen * 17) + 14

formula = "=UND(C" & frage50 & "=""n/a"";C" & frage12 & "=""n/a"")"

'Fehler
Selection.FormatConditions.Add Type:=xlExpression, Formula1:=formula
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
ExecuteExcel4Macro "(2,1,""0"" von 26"""")"
Selection.FormatConditions(1).StopIfTrue = False
End Sub


Beim Ausführen des Codes kommt die Meldung "Laufzeitfehler '5': Ungültiger Prozeduraufruf oder ungültiges Argument"

Hat jemand eine Idee was mein Fehler ist?
Anzeige

23
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Variable in Formel für die bedingte Formatierung
31.07.2024 12:55:03
daniel
Hi
es wäre hilfreich, wenn du uns sagst, in welcher Programmzeile der Fehler auftritt
was soll die zeile mit dem ExecuteExcel4Makro bewirken?
Gruß Daniel
frage12 ist nicht definiert. owT
31.07.2024 13:24:46
Uduuh
AW: frage12 ist nicht definiert. owT
31.07.2024 13:30:24
Thies01
Oh, danke. Hätte Frage120 sein müssen.

Dann kommt Laufzeitfehler 1004 für die Zeile die Daniel schon angemerkt hatte.
Anzeige
AW: frage12 ist nicht definiert. owT
31.07.2024 13:56:25
Uduuh
Hallo,
so geht's:
Sub testbedingte()

Dim frage50 As Integer
Dim frage120 As Integer
Dim ZusaetzlicheFrageBoegen As Integer
Dim strFormula As String
Dim objFC As FormatCondition

ZusaetzlicheFrageBoegen = Sheets.Count - 3

frage50 = (ZusaetzlicheFrageBoegen * 17) + 7
frage120 = (ZusaetzlicheFrageBoegen * 17) + 14

strFormula = "=UND(C" & frage50 & "=""n/a"";C" & frage120 & "=""n/a"")"

'Fehler
Set objFC = Selection.FormatConditions.Add(Type:=xlExpression, Formula1:=strFormula)
With objFC
.SetFirstPriority
'ExecuteExcel4Macro "(2,1,""0"" von 26"""")"
.StopIfTrue = False
End With
End Sub

Gruß aus'm Pott
Udo
Anzeige
AW: frage12 ist nicht definiert. owT
31.07.2024 14:50:43
Thies01
Die bedingte Formatierung ist in Excel schon drin und es sieht auch passend aus, aber es ist kein Format hinterlegt. Also das " von 26" fehlt.
Wie bekomme ich dort noch mit rein?
Wie bekomme ich dort noch mit rein?
31.07.2024 15:34:26
Uduuh
Hallo,
so wie Daniel geschrieben hat.

    Set objFC = Selection.FormatConditions.Add(Type:=xlExpression, Formula1:=strFormula)

With objFC
.SetFirstPriority
.StopIfTrue = False
.NumberFormat = "0"" von 26"""
End With


Gruß aus'm Pott
Udo
Anzeige
AW: Wie bekomme ich dort noch mit rein?
01.08.2024 07:28:05
Thies01
Super, funktioniert alles. Vielen Dank

Gruß Thies
AW: Wie bekomme ich dort noch mit rein?
01.08.2024 08:34:49
Thies01
Hallo,

da du mir schon bei den anderen bedingten Formatierungen schon so schnell und gut geholfen hast, könntest du mir auch noch bei bedingten Formatierung für die Farbskala noch helfen?

Ich hatte dort mit dem Makrorecorder wieder ein Code ausgeben lassen und dort versucht die entsprechende Formel einzufügen leider wieder ohne Erfolg. Hier der Code


Sub SummeFarbskala2()
Dim frage50 As Integer
Dim frage120 As Integer
Dim ZusaetzlicheFrageBoegen As Integer
Dim strFormula As String

ZusaetzlicheFrageBoegen = Sheets.Count - 3

frage50 = (ZusaetzlicheFrageBoegen * 17) + 7
frage120 = (ZusaetzlicheFrageBoegen * 17) + 14

strFormula = "=WENN(UND(C" & frage50 & "=""n/a"";C" & frage120 & "=""n/a"");26;WENN(UND(C" & frage50 & "=""n/a"";C" & frage12 & ">""n/a"");27;29))"

Selection.FormatConditions.AddColorScale ColorScaleType:=3
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
Selection.FormatConditions(1).ColorScaleCriteria(1).Type = _
xlConditionValueNumber
Selection.FormatConditions(1).ColorScaleCriteria(1).Value = 0
With Selection.FormatConditions(1).ColorScaleCriteria(1).FormatColor
.Color = 255
.TintAndShade = 0
End With

Selection.FormatConditions(1).ColorScaleCriteria(2).Type = _
xlConditionValuePercentile
Selection.FormatConditions(1).ColorScaleCriteria(2).Value = 50
With Selection.FormatConditions(1).ColorScaleCriteria(2).FormatColor
.Color = 65535
.TintAndShade = 0
End With

Selection.FormatConditions(1).ColorScaleCriteria(3).Type = _
xlConditionValueFormula

'Fehler
Selection.FormatConditions(1).ColorScaleCriteria(3).Value = strFormula
With Selection.FormatConditions(1).ColorScaleCriteria(3).FormatColor
.Color = 5287936
.TintAndShade = 0
End With
End Sub


Beim Ausführen wirft er den Fehler "Laufzeitfeler '1004': Anwendungs- oder objektdefinierter Fehler" und markiert wieder die Zeile unter dem Kommentar Fehler. Vielleichtkannst du mir ja wieder helfen. Vielen Dank im voraus.

Gruß Thies
Anzeige
AW: Wie bekomme ich dort noch mit rein?
01.08.2024 10:07:36
daniel
naja ist genau der Fehler, der dir schon erklärt wurde und den du hier nochmal machst: frage12 statt frage120
das du das inzwischen wissen solltest, solltest du diesen Fehler auch selber finden wenn er auftaucht.
btw, arbeite zukünftig bitte mit Option Explicit. dann weist dich der VBA-Edtior auf solche Fehler hin.
weitere Infos dazu hier: https://online-excel.de/excel/singsel_vba.php?f=4
Gruß Daniel
Anzeige
AW: Wie bekomme ich dort noch mit rein?
01.08.2024 13:30:26
Uduuh
Hallo,
Formeln für bedingte Formatierungen dürfen nur WAHR oder FALSCH ausgeben, keine Werte.
Außerdem besitzt das ColorScaleCriteria-Objekt keine Eigenschaft .Value

Gruß aus'm Pott
Udo
AW: Wie bekomme ich dort noch mit rein?
01.08.2024 13:49:50
Thies01
Wenn man eine Regel für eine bedingte Formatierung mit einer 3-Farben-Skala baut, kann man für Minimum, Mittelwert und Maximum als Typ Formel auswählen. Das habe ich auch ohne VBA einmal für das Ergebnis von dem Fragebogen, der von Anfang an in der Datei ist, gemacht.

=WENN(UND($C$7="n/a";$C$14="n/a");26;WENN(UND($C$7="n/a";$C$14>"n/a");27;29))


Damit wird dann je nachdem wie die Fragen beantwortet wurden ein anderer Wert fürs Maximum festgelegt. Das möchte ich halt gerne mit dem Makro machen. Nur das die Zellbezüge nur das Makro mit Variablen gefühlt werden.

Gruß Thies
Anzeige
AW: Wie bekomme ich dort noch mit rein?
01.08.2024 14:04:08
Uduuh
Hallo,
dann muss StrFormula asolute Bezüge ausgeben.
strFormula = "=WENN(UND($C$" & frage50 & "=""n/a"";$C$" & frage120 & "=""n/a"");26;WENN(UND($C$" & frage50 & "=""n/a"";$C$" & frage120 & ">""n/a"");27;29))"

Gruß aus'm Pott
Udo
AW: Wie bekomme ich dort noch mit rein?
01.08.2024 14:18:10
Thies01
Ja, das ergibt Sinn. Er gibt, aber trotzdem den gleichen Fehler an der gleichen Stelle aus. Er baut die bedingte Formatierung in Excel sogar soweit. Es fehlt nur die Formel fürs Maximum, welche er nicht einträgt.

Gruß Thies
Anzeige
bei mir läuft's. owT
01.08.2024 14:47:05
Uduuh
AW: bei mir läuft's. owT
01.08.2024 14:56:24
Thies01
Wie sieht denn dein Code? Bei mir leider nicht :(
Wie sieht denn dein Code?
01.08.2024 15:00:03
Uduuh
so wie deiner. Nur mit korrekter strFormula= ...

Gruß aus'm Pott
Udo
Anzeige
AW: Wie sieht denn dein Code?
01.08.2024 15:08:48
Thies01
Kannst du den mir sonst schicken? Dann kann ich abgleichen und hoffentlich meinen Fehler finden.

Gruß Thies
AW: Wie sieht denn dein Code?
01.08.2024 15:27:35
Uduuh
Sub SummeFarbskala2()

Dim frage50 As Integer
Dim frage120 As Integer
Dim ZusaetzlicheFrageBoegen As Integer
Dim strFormula As String
Dim objFC As FormatCondition

ZusaetzlicheFrageBoegen = Sheets.Count - 3

frage50 = (ZusaetzlicheFrageBoegen * 17) + 7
frage120 = (ZusaetzlicheFrageBoegen * 17) + 14

strFormula = "=WENN(UND($C$" & frage50 & "=""n/a"";$C$" & frage120 & "=""n/a"");26;WENN(UND($C$" & frage50 & "=""n/a"";$C$" & frage120 & ">""n/a"");27;29))"

Selection.FormatConditions.AddColorScale ColorScaleType:=3
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
Selection.FormatConditions(1).ColorScaleCriteria(1).Type = _
xlConditionValueNumber
Selection.FormatConditions(1).ColorScaleCriteria(1).Value = 0
With Selection.FormatConditions(1).ColorScaleCriteria(1).FormatColor
.Color = 255
.TintAndShade = 0
End With

Selection.FormatConditions(1).ColorScaleCriteria(2).Type = _
xlConditionValuePercentile
Selection.FormatConditions(1).ColorScaleCriteria(2).Value = 50
With Selection.FormatConditions(1).ColorScaleCriteria(2).FormatColor
.Color = 65535
.TintAndShade = 0
End With

Selection.FormatConditions(1).ColorScaleCriteria(3).Type = _
xlConditionValueFormula

'Fehler
Selection.FormatConditions(1).ColorScaleCriteria(3).Value = strFormula
With Selection.FormatConditions(1).ColorScaleCriteria(3).FormatColor
.Color = 5287936
.TintAndShade = 0
End With
End Sub
Anzeige
AW: Wie sieht denn dein Code?
01.08.2024 15:43:52
Thies01
Vielen Dank. Ich hatte einen kleinen Fehler bei den Zeichen der variable eingebaut.

Gruß Thies
Korrektur
01.08.2024 13:47:02
Uduuh
für Farbskalen können keine relativen Bezüge verwendet werden.
AW: Wie bekomme ich dort noch mit rein?
01.08.2024 11:57:25
Thies01
Danke, für den Hinweis. Option Explicit ist ab jetzt immer eingeschaltet.
Leider ändert dies am Fehler nichts.

Gruß Thies
Anzeige
AW: frage12 ist nicht definiert. owT
31.07.2024 14:00:48
daniel
Hi
du willst das Zahlenformat für die Bedingte Formatierung ändern.
probier mal das anstelle dem ExecuteExcel4Makro
Selection.FormatConditions(Selection.FormatConditions.Count).NumberFormat = "0 ""von 26"""



der Recorder scheint hier fehlerhaft zu arbeiten.

Gruß Daniel
Anzeige
AW: Variable in Formel für die bedingte Formatierung
31.07.2024 13:09:45
Thies01
Hallo,
sorry wollte ich noch mit rein geschrieben haben. Beim debuggen zeigt er mir die Zeile unter dem Kommentar Fehler gelb an.

Ich den Code für die bedingte Formatierung erst mit Makro aufzeichnen erstellt und dann halt versucht die variablen einzubauen. Was die Zeile genau macht weiß ich nicht. Ich bin in dem VBA-Thema halt noch sehr neu.

Am Ende soll halt der Summenwert dort stehen und wenn die Bedingungen der Formel erfüllt sind dahinter "von 26" stehen.
Gruß Thies
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige