Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
780to784
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
780to784
780to784
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Bed. Formatierung per VBA - wird nicht berechnet

Bed. Formatierung per VBA - wird nicht berechnet
13.07.2006 16:19:30
{Boris}
Hi Leute,
in A2:A20 stehen Werte: 2,2,2,3,3,3,5,6,6,6,7,7,4,4,4, usw.
usw.
Immmer, wenn sich der Wert ändert, soll die Hintergrundfarbe abwechseln grün oder farblos sein. Das geht mit der bed. Formatierung mit der Formel (A2 ist aktiv):
=REST(SUMME(N($A$1:$A1$A$2:$A2));2)
Mach ich das gleiche Spielchen aber aus VBA heraus, wird alles grün. Erst wenn ich händisch den Bereich markiere und die bed. Formatierung mit OK bestätige, zeigt die Formel Wirkung.
Option Explicit

Sub test()
With Range("A2:A20")
.Cells(1).Activate
.FormatConditions.Delete
.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=REST(SUMME(N($A$1:$A1<>$A$2:$A2));2)"
.FormatConditions(1).Interior.ColorIndex = 4
End With
End Sub

Warum funktioniert das nicht sofort aus VBA heraus bzw. was mache ich falsch?
Grüße Boris

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bed. Formatierung per VBA - wird nicht berechnet
13.07.2006 16:23:52
Piet
Hallo Boris,
um eine Formel aus VBA heraus in die bedingte Formatierung (und sonstwohin) zu schreiben, muss sie mit dem englischen Befehlssatz formuliert werden. Leider steht das nirgendwo in der Doku, versuch mal die Formel in eine Zelle einzugeben während du das Ganze mit Makrorecorder aufzeichnest, dann sollte VBA die korrekte Formel aufweisen. Hoffe, das hilft dir!
Gruß
Piet
Nein, das ist es nicht...
13.07.2006 16:30:14
{Boris}
Hi Piet,
das hatte ich schon probiert. Mit
.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=MOD(SUM(N($A$1:$A1$A$2:$A2)),2)"
gibt´s nen Laufzeitfehler 5 - ungültiger Prozeduraufruf oder ungültiges Argument.
Grüße Boris
Anzeige
Was läuft denn da schief?
13.07.2006 16:57:40
{Boris}
Hi Leute,
wenn ich am Ende das Makros noch den Dialog "Condition Formatting" aufrufe, dann bekomm ich bei Klick auf OK nen Laufzeitfehler 1004 - "die Show-Methode...kann nicht ausgeführt werden".
Option Explicit

Sub test()
With Sheets(1).Range("A2:A20")
.Cells(1).Activate
.FormatConditions.Delete
.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=REST(SUMME(N($A$1:$A1<>$A$2:$A2));2)"
.FormatConditions(1).Interior.ColorIndex = 4
End With
Application.Dialogs(xlDialogConditionalFormatting).Show
End Sub

Gibt es für das Problem denn eine Lösung oder zumindest eine Erklärung?
Grüße Boris
Anzeige
AW: Was läuft denn da schief?
13.07.2006 17:03:42
Mac4
Hallo Boris,
kann das nicht doch an der fehlenden englischen Schreibweise liegen?
Rest bzw. Mod kann man ja leider so nicht in der Formel benutzten, ich hatte mal irgendwo eine Alternative zu Mod gelesen, habe es aber leider jetzt nicht mehr präsent.
Ist vielleicht ein Gedankenanstoß - ich denke auch noch weiter mit!
Marc
Nein, nicht w/englischer Schreibweise...
13.07.2006 17:15:10
{Boris}
Hi Marc,
das geht nicht mit der englischen Syntax. Hab´s rauf und runter probiert - auch mit ganz anderen Funktionen.
Es muss also an was anderem liegen.
Grüße Boris
AW: Was läuft denn da schief?
13.07.2006 17:14:44
K.Rola
Hallo Liebes,

Sub test()
With Sheets(1).Range("A2:A20")
.Cells(1).Activate
.FormatConditions.Delete
.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=REST(SUMME(N($A$1:$A1<>$A$2:$A2));2)"
.FormatConditions(1).Interior.ColorIndex = 4
.Select
End With
CommandBars.FindControl(ID:=3058).Execute
End Sub

Warum? Denk mal darüber nach.
Gruß K.Rola
Anzeige
Ah ja....
13.07.2006 17:30:46
{Boris}
Hi Liebes,
"Warum? Denk mal darüber nach."
Ich geb mir ja Mühe, aber es ist ganz schön warm hier...
Könntest du meinem kleinen Spatzenhirn da etwas auf die Sprünge helfen?
Und möchlicherweise auch noch den Dialog ganz verschwinden lassen? :p
Grüße Boris
Und weg ist der Dialog...
13.07.2006 17:34:35
{Boris}
Ich nochmal,
Application.SendKeys "{ENTER}"
CommandBars.FindControl(ID:=3058).Execute
Letzte Frage: Geht das nur mit Sendkeys?
Grüße Boris
AW: Und weg ist der Dialog...
13.07.2006 17:54:11
K.Rola
Hallo Schatz,
für den eigentlichen Effekt habe ich keine Erklärung. Execute kennt keine Argumente,
daher geht es m.E. nur mit Sendkeys(auch ohne Application).
Gruß K.Rola
Anzeige
AW: Und weg ist der Dialog...
13.07.2006 18:12:50
{Boris}
Liebes,
für den eigentlichen Effekt habe ich keine Erklärung
Aber mich zum Nachdenken anhalten ....;-)
Ihr Frauen wisst schon, wie ihr uns Männer beschäftigt ....
Wie immer: besten Dank!
Grüße Boris
AW: Und weg ist der Dialog...
13.07.2006 18:17:44
K.Rola
Hallo Mann,
das war auf das execute vs show bezogen.
Gruß K.Rola
Klick...
13.07.2006 18:32:23
{Boris}
Hi Mausi,
...es ist halt einfach zu warm - und wenn Du noch dabei bist, wird´s mir noch viel wärmer. Und da setzt mein Verstand dann endgültig aus...
Grüße Boris
Des Rätsels (halbe) Lösung...
13.07.2006 21:44:33
{Boris}
Hi Liebes,
es scheint daran zu liegen, dass die Formel eigentlich eine {Arrayformel} ist, was ja innerhalb der Bed. Formatierung und der Gültigkeit eigentlich nicht als solche angezeigt werden muss (bzw. es geht ja gar nicht).
Wenn ich die Formel mittels SUMMENPRODUKT von den { } befreie, dann funktioniert das Ganze auch ohne den abschließenden Aufruf der Bed. Formatierung:
Option Explicit

Sub test()
With Sheets(1).Range("A2:A20")
.Cells(1).Activate
.FormatConditions.Delete
.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=REST(SUMMENPRODUKT(N($A$1:$A1<>$A$2:$A2));2)"
.FormatConditions(1).Interior.ColorIndex = 4
End With
End Sub

Bleibt die Frage, warum es mit {SUMME} via VBA nicht so ohne weiteres geht...
Grüße Boris
Anzeige

314 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige