Farbauswertung in excel

Ich will in Excel die Summe über einen Bereich, dessen Hintergrund nicht farblos ist.
Aus dem Internet habe ich mir folgendes zusammengestoppelt:

Function Gesamtinvestition(Bereich As Range)
'addiert Werte
Dim Zelle As Range
Application.Volatile
For Each Zelle In Bereich
If Zelle.Interior.ColorIndex > 0 Then
If Werte Then
'summiert Werte der Zellen
Ergebnis = Ergebnis + Zelle
Else

End If
End If
Next Zelle
Gesamtinvestition = Ergebnis
End Function

Leider funktioniert nichts, bleibt in Zeile 6 stehen und behauptet:

„Die Interior-Eigenschaft des Range-Objektes kann nicht zugeordnet werden.“

Was mache ich falsch ???

cu

Hi Ghost,

es gibt Excelforen da würdest du als Antwort nur einen Betreff bekommen der so aussehen könnte:
OT was soll das denn?

Der Grund ist, du benutzt nicht den pre-Tag (in der Hilfe bschriebn) d.h. dein Code ist schlecht lesbar.

Man sieht kein Option Explicit (Einstellbar im Editor unter Optionen, Variablendeklaration notwendeig o.ä.)

Wenn das sichtbar wäre, wäre klar daß die Variable „Wert“ bekannt ist.
Mag jetzt mit der Problematik nix zu tun haben, mal grundsätzlich.
Und strWert, lngWert, intWert wäre besser.
Ist eine stille aber sehr hilfreiche, Vereinbarung wie man Variablen benennt, bei strWert weiß ich, aha, ein String usw., bei „Wert“ weiß ich nix.

Wie du daraus daß ich dir antworte ablesen kannst, bin ich nicht so knallhart.

Ich habe jetzt deinen Code nicht getestet, aber sehe da auf den ersten Blick kein Problem. Müßte an sich laufen.

Die Fehlermeldung sagt sie kann der Zelle keine Farbe zuweisen.
*grübel* kann es sein daß da irgendwas anderes als eine Zelle selektiert ist? *rumvermut*
Hat das Blatt Blattschutz?

Gruß
Reinhard

Hallo Reinhard,

Den Code wurde von mir formatiert eingestellt, so wie im Internet tausende Codezeilen existieren.
Das er jetzt so bescheiden aussieht liegt also nicht an mir.

Die Aussage „zusammengestoppelt“ bei so einem primitiven Stück sagt eigentlich aus, wieviel Ahnung ich habe.
Demzufolge kann ich mit den Bemerkungen nichts anfangen.

Das der Code so laufen sollte ist mir klar, die Funktionsweise habe ich verstanden.
Beim probieren gestern ist mir noch aufgefallen:

ein

If Cells(x, y).Interior.ColorIndex = 4 Then

in einem Puplic Sub läuft, in Function läufts nicht, hier kommt wieder dieser Fehler.

cu

Hi Ghost,

Den Code wurde von mir formatiert eingestellt, so wie im
Internet tausende Codezeilen existieren.
Das er jetzt so bescheiden aussieht liegt also nicht an mir.

richtig, das galt solange bis du von mir das Wissen mitgeteilt bekamst wie du ihn unbescheidener aussehen lassen kannst, ab jetzt hast du Einfluß darauf wie er aussieht :smile:

Die Aussage „zusammengestoppelt“ bei so einem primitiven Stück
sagt eigentlich aus, wieviel Ahnung ich habe.
Demzufolge kann ich mit den Bemerkungen nichts anfangen.

Das kann ich aus „zusammengestoppelt“ nicht unbedingt so erahnen und sicher, meine Bemerkungen sind für einen völligen Anfänger schwierig zu verstehen.
Wie eben angedeutet, das war mir nicht so klar, sorry.

Das der Code so laufen sollte ist mir klar, die Funktionsweise
habe ich verstanden.

Ja, er funktioniert, ich habe „If Werte“ rausgeworfen, da ich ja nicht weiß welchen Wert „Werte“ hat und wie ich mir dachte, lief er problemlos.

Beim probieren gestern ist mir noch aufgefallen:
ein

If Cells(x, y).Interior.ColorIndex = 4 Then

in einem Puplic Sub läuft, in Function läufts nicht, hier
kommt wieder dieser Fehler.

Da kann ich so nichts zu sagen, die Syntax ist okay. Was haben x,y für Werte, wie startest du die Funktion,

in Excel:
=MeineFunktion(A1,B1)

oder in Vba:
Sub Test()
msgbox MeineFunktion(5,8)
End sub

und, wie sieht der Gesamtcode der Funktion und der Sub aus, welche Werte haben die Variablen beim Aufruf.

Grundsätzlich gilt, wenn du eine Funktion in Excel startest, so kann sie nur in der Aufrufzelle ein Ergebnis liefern, nie aber irgendeine andere Zelle ändern. Aber innerhalb des Codes kann sie problemlos z.B. Farbwerte anderer Zellen auslesen.

Deshalb nochmals, die Abfrage welcher Farbwert gesetzt ist, muß in einer Function und in einer Sub gleichermaßen laufen.

Wenn das wie bei dir nicht geschieht, so muß es m.E. an anderen Dingen liegen. Trotzdem brauche ich erstmal die beiden Codes um endgültig zu verifizieren daß es nicht am Code liegen kann…

Gruß
Reinhard

Gruß
Reinhard

Hallo Reinhard,

wie kann ich in diesem Board einen Beitrag editieren, ich habe bis jetzt nichts gefunden.

Die " If Werte" war ein Rest, der dort so nicht hingehörte.
Ich habe stundenlang mit dem Code experimentiert, zum Schluß war ich dann etwas betriebsblind.

Die x,y-Werte in dem Beispiel waren beliebig, z.B. 3, 3.

Aber ich stelle im Anschluß nochmal den Orginalcode rein, hoffe die Formatierung bleibt erhalten.

Vorgehensweise:
neue Datei - leere Tabelle - einfügen Modul - Function.
Diese kann ich dann in eine Zelle einfügen und einen Bereich auswählen.
In diesen Bereich setzte ich ein paar Werte und färbe ein paar Zellen.
Jetzt setze ich in eine Zelle meine Funktion und definiere den Bereich. Das korrekte Ergebnis erscheint.
Beim aktualisieren der Zelle mit Funktion kommt dann … :frowning:.

cu

Public Function Gesamtinvestition(Bereich As Range) As Double
'addiert Werte in Zellen wenn Hintergrund nicht farblos

Dim Zelle As Range
Dim Summe As Double

Application.Volatile

For Each Zelle In Bereich

If Zelle.Interior.ColorIndex = xlNone Then
'Inhalt wird nicht gewertet

Else
'Werte addieren
Summe = Summe + Zelle

End If

Next Zelle

Gesamtinvestition = Summe

End Function

Habs glaube hingekriegt, zumindest die Vorschau sah gut aus.

Hi Ghost,

wenn das funktioiert, so probier mal dieses:

Option Explicit
'
Public Function Gesamtinvestition(Bereich As Range) As Double
Dim Zelle As Range
Application.Volatile
For Each Zelle In Bereich
 If Zelle.Interior.ColorIndex -4142 Then Gesamtinvestition = Gesamtinvestition + Zelle.Value
Next Zelle
End Function

Und, wenn es auch ohne Volatile funktioniert, dann laß die entsprechende Zeile weg. Volatile ist eine Bremse, nur benutzen wenn es nicht anders geht.

Und -4142 ist das Gleiche wie xlNone, nur halt schneller, da Vba nicht nachschauen muß welchen Zahlenwert denn xlnone verkörpert.

Gruß
Reinhard

Hallo Reinhard,

wenn das funktioiert, so probier mal dieses:

Du hast da was missverstanden.
Das hingekriegt bezog sich auf das formatierte Einstellen des Codes.
Bitte Post vorher lesen.
Mit Deinem Code kommt es aufs Gleiche raus - beim einsetzen der Formel ok- aktualisieren :frowning:

cu

Das hingekriegt bezog sich auf das formatierte Einstellen des
Codes.
Bitte Post vorher lesen.
Mit Deinem Code kommt es aufs Gleiche raus - beim einsetzen
der Formel ok- aktualisieren :frowning:

Hallo Ghost,

so kommen wir nich weiter, irgendwie reden wir aneinander vorbei oder sonstwas, egal, nicht weiter schlimm.

Bastle mal eine kleine Beispielmappe, wo genau das so passiert wie du es sagst, und lad das Teil mal hoch bei www.hostarea.de oder ähnlichen Hochladern.

Ich weiß jetzt gar nicht ob du das schon gesagt hast, vielleicht auch unwichtig, aber der Teufel steckt oft im Detail, also um welche Excelversion geht es?

Gruß
Reinhard

Jetzt bin ich platt !!! Es geht.
Kurze Erläuterung: Ich habe ein AddIn (XLQuotes) installiert. Das holt Börsenkurse von Yahoo und trägt sie in die Tabelle ein. Da es ab einer gewissen Anzahl Daten ziemlich dauert habe ich die Berechnung auf manuell gestellt und benutze bei Berechnungen die Schaltfläche „Markierung aktualisieren“ des AddIn.
Funktioniert auch alles wunderbar, die markierten Zellen (die alle möglichen Orginalfkt. enthalten) werden korrekt berechnet, aber eben nicht mit dieser selbstgeschriebenen Funktion.
Habe bei meiner Testmappe (die kaum etwas enthält) jetzt mal F9 benutzt und es ging.
Das Problem hängt also irgendwie mit dem AddIn zusammen.
Da habe ich nun ein anderes Problem.
Da die Datenaktualisierung über das AddIn ca. 3-4 Min. dauert ist eine automatische Neuberechnung der Mappe nicht machbar. Werde mir halt was einfallen lassen.

Ich danke Dir auf jeden Fall für Deine Hilfe.
Vieleicht kannst Du mir noch hierzu einen Tipp geben. Sowohl Word als auch Excel minimieren sich beim anklicken eines Hyperlinks. Kann man Das abstellen ?

cu

Hallo Ghost,

Jetzt bin ich platt !!! Es geht.

das ist schön, weil damit kann ich mir ersparen das angesprochene Add-In durchzuprüfen usw. :smile:

Vieleicht kannst Du mir noch hierzu einen Tipp geben. Sowohl
Word als auch Excel minimieren sich beim anklicken eines
Hyperlinks. Kann man Das abstellen ?

Tjanu, das hatten wir doch schon:
/t/excel-2000-und-hypelinks/4451791/7

Mehr als damals habe jetzt ich auch nicht im Kasten. Probiers mal so, stell diese Anfrage nochmals, aber im Wordbrett, vielleicht wissen die was mehr.
Natürlich unbedingt mit Hinweis auf deinen alten Thread im Excelbrett, damit sie wissen was schon lief an Hilfsversuchen.

Gruß
Reinhard

cu

Da hatte ich noch gar nicht wieder reingekuckt, sorry.
Ich antworte dann dort.

cu

Da komme ich so gar nicht mehr hin.
Die Version mit „Follow.Hyperlink“ habe ich schon versucht, dr Befehl wird auch ausgeführt und danach wird trotzdem minimiert.

cu