Microsoft Excel

Herbers Excel/VBA-Archiv

Addition von Zahlen gleicher Farbe


Betrifft: Addition von Zahlen gleicher Farbe
von: Lars
Geschrieben am: 11.12.2018 06:58:14

Hallo zusammen,

Im VBA habe ich ein Makro, welches mir Zahlen gleicher Farbe in einer Zeile addiert.
Das funktioniert bist zu dem Punkt wo der Farbcode zweistellig wird.
So sieht das aus:

Function Krank(Bereich As Range)
Application.Volatile
Krank = 0
For Each zelle In Bereich
If zelle.Font.ColorIndex = 3 Then    
Krank = Krank + zelle.Value
End If
Next
End Function
Ich kenne es von C++... Deklaration als Int oder double
Wahrscheinlich ist das hier ähnlich?!

Kann mir jemand sagen, wie ich die Addition hinbekomme, wenn der ColourIndex mehrstellig ist?

Vielen Dank

  

Betrifft: AW: Addition von Zahlen gleicher Farbe
von: Zwenn
Geschrieben am: 11.12.2018 10:13:31

Hallo Lars,

grundsätzlich solltest Du genau wie in C++ alle Variablen deklarieren. Das spart einem viel Stress bei der Fehlersuche in etwas komplexeren Makros. Um die Deklaration zu erzwingen, schreibe ganz oben in jedes verwendete Modul Option Explicit. Excel meckert dann auch über eine nicht deklarierte Variable, wenn Du einen einfachen Schreibfehler machst.

Variablen dimensionierst Du mit dem Schlüsselwort Dim. In Deinem Fall hast Du die Variablen:

Dim krank As long 'falls es reicht auch Integer
Dim zelle As Variant 'eigentlich Range, aber Laufvariablen für For Each müssen universell sein
In Deinem Makro verwendest Du nur 3 als Farbcode, also Rot. Das sollte so auch funktionieren (habe es nicht getestet). Wenn Du sagst, es geht nicht mit zweistelligen Codes, könnte ich mir vorstellen, dass das an den teilweise doppelt definierten Farben für Color Index liegt und jeweils der andere Farbcode vorliegt. Hier mal die Aufschlüsselung der doppelten nach RGB:
Rot	Grün	Blau	Farbnummer
0	0	128	11
0	0	128	25
			
0	0	255	5
0	0	255	32
			
128	0	0	9
128	0	0	30
			
0	128	128	14
0	128	128	31
			
0	255	255	8
0	255	255	28
			
128	0	128	13
128	0	128	29
			
255	0	255	7
255	0	255	26
			
255	255	0	6
255	255	0	27
			
153	51	102	18
153	51	102	54
			
204	255	255	20
204	255	255	34
Ansonsten bin ich nicht sicher, was Application.Volatile in diesem Fall bringt. Soweit ich weiß, löst ein Farbwechsel auch hier keine Neuberechnung aus. Aber darüber wissen andere Leute hier wesentlich besser bescheid als ich.

Viele Grüße,

Zwenn


  

Betrifft: Was bringt Application.Volatile
von: Daniel
Geschrieben am: 11.12.2018 10:52:30

Hi
mit Application.Volatile erreichst du, dass die Formel neu berechnet wird, wen der Wert irgendeiner Zelle geändert wird.
ohne Application.Volatile müsstest du gezielt eine Zelle aus dem Zellbereich ändern, der von der Formel mit der Funktion "Krank" verwendet wird, um die Formel neu berechnen zu lassen.

somit ist es leichter, die Formeln mit dieser Funktion zu aktualisieren, weil es ausreicht irgendeine Zelle in Excel zu ändern und dann alle Formeln wieder die korrekten Werte anzeigen.

das löst zwar nicht grundsätzlich das Problem von Funktionen, die Formate auswerten, aber es macht das ganze praktikabel.

Gruß Daniel


  

Betrifft: AW: Was bringt Application.Volatile
von: Sulprobil
Geschrieben am: 11.12.2018 19:56:09

Hallo,

Ich empfehle, sich bei Farben oder Formaten an einer Referenzzelle zu orientieren:
http://sulprobil.com/Get_it_done/IT/Excel_Fun/Excel_VBA/sbSumMyFormat/sbsummyformat.html

Application.volatile hilft gar nicht. Besser ist ein User Button, mit dem man die Neuberechnung anstößt.

Viele Grüße,
Bernd P


  

Betrifft: Application.Volatile hilft schon (s.Daniel), ...
von: Luc:-?
Geschrieben am: 12.12.2018 15:39:10

…nur nicht sofort, Bernd,
denn das ist bei reiner Formatierungsänderung (übers Menü) ja auch nicht möglich. Anders sieht's natürlich bei Verwendung des FormatPinsels aus.
Übrigens ist Deine WebSite einer der, UDF-bezogen, nicht allzu häufigen Lichtblicke im Web
Gruß, Luc :-?

„Die Intelligenzmenge ist auf diesem Planeten eine Konstante, die Bevölkerung nimmt aber zu!“ Auch deshalb informieren mit …