Hallo Frank,
mit einer slebstgeschriebenen Makro-Function wäre das möglich.
Suchst Du sowas ?
Wie sieht denn dein Summen-Aufruf (Formel) aus ?
Gruß Matjes
[br]
[br]Erstellt am: 02.07.06 um 15:30:00
[br]Hallo Frank,
Die selbstgeschrieben Summen-Funktion sähe so aus:
Code:
Function SummeOhneFarbe(ParamArray c() As Variant) As Variant
Dim r As Range, Zelle As Range
Dim dSumme As Double, x As Long
On Error Resume Next
->über alle angegebenen Bereiche
For x = LBound(c) To UBound(c)
->Bereich setzen
Set r = c(x)
If Err.Number <> 0 Then
->Bereichsangabe fehlerhaft -> #WERT setzen
SummeOhneFarbe = CVErr(xlErrValue)
GoTo AUFRAEUMEN
Else
->alle Zellen des Bereichs untersuchen
For Each Zelle In r
With Zelle
->numerischer Inhalt ?
If IsNumeric(.Value) Then
->Farbindex der Zelle gesetzt?
If .Interior.ColorIndex = xlColorIndexAutomatic Or _
.Interior.ColorIndex = xlColorIndexNone Then
->nein -> aufsummieren
dSumme = dSumme + .Value
End If
End If
End With
Next
End If
Next
SummeOhneFarbe = dSumme->Rückgabe
AUFRAEUMEN:
On Error GoTo 0
Set r = Nothing: Set Zelle = Nothing
End Function
Dieses Makro muß in einem Modul liegen.
Vorgehensweise:
a) deine Excel-Datei öffnen
b) mit Alt+F11 VB-Editor öffnen
c) im Projektfenster mit rechter Maustaste auf VBAProject(Dein Dateiname)
und im sich öffnenden Context-Menu Einfügen->Modul wählen
Es öffnet sich ein Fenster DeinDateiname - Modul1 (Code)
d) Makro per Copy und Paste in dieses Fenster kopieren
e) Speichern mit Alt+S
f) VB-Editor schliessen mit Alt+Q
So, jetzt hast Du eine Summen-Funktion SummeOhneFarbe, die nur die nicht mit einem Farbhintergrund belegten Zellen summiert.
Du kannst diese Funktion in Formeln wie die Summe-Funktion benutzen. Finden kannst du sie beim Formelschreiben unter weitere Funktionen-> benutzerdefiniert.
Einen Haken hat die Sache nun noch - Farbänderungen ändern die Zelle nicht - und deshalb wird die Funktion nicht ausgeführt, wenn nur der Hintergrund einer Zelle geändert wird. Auch ein F9 auf die Summenformel führt zu keiner Neuberechnung. Auf normale Änderungen reagiert die Funktion wie die Funktion->Summe'.
Mit einem kleinen Trick kann man Excel zur Neuberechnung anregen, indem man eine Zelle, die sonst nicht benötigt wird, mit in die Summenformel aufnimmt und deren Wert auf 0 setzt (also keine Verfälschung der Summe).
Beispiel:
Vorher:
=SummeOhneFarbe(A3:A12;B3:B12)
Mit der unbenutzten Zelle A2:
=SummeOhneFarbe(A2;A3:A12;B3:B12)
Wenn man jetzt A2 ändert, wird die Formel auf jeden fall neu berechnet.
Also z.B. von 0->1 und wieder zurück 1->0.
Für diese Änderung wird ein kleiner Makro eingesetzt.
Code:
Sub FreiZelleToggeln_0_1_0()
Const FREIEZELLE = A2
Range(FREIEZELLE).Value = 0
Range(FREIEZELLE).Value = 1
Range(FREIEZELLE).Value = 0
End Sub
Diesen Makro kopierst Du auch ins Modul1 (siehe oben)
Die Konstante FREIEZELLE passt Du deinen Gegebenheiten an.
z.B. änderst Du A2 zu X25
Nicht vergessen die freie Zelle auch in die Summenformel mit aufnehmen.
Wenn Du jetzt eine Zelle der Summe farbig markierst und anschliessend das Makro FreiZelleToggeln_0_1_0() ausführst, wird die summe neu berechnet.
Den Makro FreiZelleToggeln_0_1_0() kann man jetzt noch auf einen Button legen.
a) Mit Ansicht->Symbolleisten->Steuerelement Toolbox machst Du die Werkzeugleiste Toolbox sichtbar.
b) Klicke die->Befehlsschaltfläche' an.
c) setze eine Befehlschaltfläche unterhalb deiner Summenformel
d) diese Befehlsschaltfläche mit der rechten Maustaste anklicken und aus dem Kontext-Menu
'Befehlsschaltflächen-Objekt'->Bearbeiten wählen
Den Buttontext z.b. in->Summe aktualisieren' ändern
e) den Button mit der linken Maustaste doppelt klicken
Es öffnet sich die Code-Seite des Blattes.
f) die Funktion
Code:
Private Sub CommandButton1_Click()
End Sub
in
Code:
Private Sub CommandButton1_Click()
Call FreiZelleToggeln_0_1_0
End Sub
ändern
g) auf der Steuerelement Toolbox das->Dreieck mit Lineal und Bleistift' anklicken
(Bedeutung: Entwurfsmodus beenden)
Damit sollten die Markierungseckpunkte des Buttons verschwinden.
So jetzt ausprobieren.
a) eine Summenzelle farbig setzen.
b) Button->Summe aktualisieren' drücken
Gruß Matjes