Anzeige
Archiv - Navigation
788to792
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
788to792
788to792
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Verwendung von Specialcells in Function

Verwendung von Specialcells in Function
14.08.2006 16:51:46
Specialcells
Hallo
angeregt durch einen Beitrag im Forum (https://www.herber.de/forum/messages/791379.html), bin ich auf ein weiteres Problem gestoßen:
die Funktion Specialcells funktioniert anscheinden nicht in UDF, die als Excel-Formel verwendet werden.
Werden sie aber von einem Makro aufgerufen, gehts seltsamerweise.
im angehängten Beispiel sollen alle Zahlen eines Bereiches zusammenaddiert werden, allerdings nur echte Werte, keine Formeln bzw berechnete Werte.
hierzu habe ich eine Funktion geschrieben, in der der Bereich über Specialcells entsprechend eingeschränkt wird.
Das seltsame ist, wenn ich die UDF von einem Makro aufrufe, wird korrekt gerechnet wie man durch drücken des Buttons feststellen kann, in der Excel-Formel dagegen werden auch die Formeln mit aufaddiert, dh. die Einschränkung mit Specialcells funktioniert nicht, es wird der ganze Zellebereich mit übergeben.
Da stellt sich doch die Frage: Bug oder Feature.
hat jemand zu diesem Verhalten weiter Infos?
https://www.herber.de/bbs/user/35789.xls
hier die Codes für UDF und Testmakro
Option Explicit

Function Sum_nur_Werte(rng As Range)
Dim Bereich As Range
Set Bereich = rng.SpecialCells(xlCellTypeConstants, 1)
Sum_nur_Werte = WorksheetFunction.Sum(Bereich)
End Function


Sub Test()
Dim var
var = Sum_nur_Werte(Range("A:A"))
MsgBox ("Summe ohne Formeln " & var)
End Sub

Gruß, Daniel

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Verwendung von Specialcells in Function
14.08.2006 17:02:02
Specialcells
Hi,
"Specialcells funktioniert anscheinden nicht in UDF"
So ist es!
mfg Kurt
AW: Verwendung von Specialcells in Function
14.08.2006 17:15:33
Specialcells
Hallo Daniel,
leider bestätigt sich auch in diesem Fall wieder einmal, daß UdF's empfindlich sind wie rohe Eier. Man kann den übergebenen Objekt-Bereich nicht manipulieren, bzw. im Vorbeigehen auch noch bei anderen Zellen den Wert korrigieren. Hier steigt Excel aus und übergibt entweder gar keine Wert oder nimmt dem Gesamtbereich für die Datenberechnung.
Das es auch anders geht, zeigt Access. Hier kann ich ich im Report aus dem gegebenen Wertebereich selektieren, Zwischenwerte berechnen, berechnenden Feldern übergeben usw.
In Excel mußt Du da bescheidener sein. Deshalb benutze ich diese UdF's in Zellen nicht mehr und organisiere die Berechnung per Menü-Button's. Und vor dem Drucken erfolgt eine erneute Berechnung der zu druckenden Worksheets.
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Verwendung von Specialcells in Function
14.08.2006 17:41:44
Specialcells
Hallo Daniel,
hier aus dem Forum folgende UDF

Function SummeAbs(rng As Range) As Double
Dim Zelle     As Range
Dim dblSumme  As Double
Application.Volatile
dblSumme = 0
For Each Zelle In rng
If Not (Zelle.HasFormula Or Zelle.EntireRow.Hidden) Then
dblSumme = dblSumme + Zelle
End If
Next Zelle
SummeAbs = dblSumme
End Function

Viele Grüße Peter
Eine kurze Nachricht, ob es läuft, wäre nett - danke.
AW: Verwendung von Specialcells in Function
14.08.2006 18:43:09
Specialcells
Hallo Peter
kenn ich, stammt ja von mir (zumidest der Zusatz mit "c.entirerow.hidden")
genau bei meinen Überlegungen zu diesem Problem bin ich ja darauf gestoßen, daß die Schleife und Abfrage ja überfüssig sind, da man den aufzusummierenden Zellbereich mit SPECIALCELLS ja extakt einschränken kann,
was die Verarbeitungsgschwindigkeit bei großen Datenmengen steigern würde.
Leider hats nicht funktioniert, weswegen ich die Frage hier gestellt habe.
Gruß, Daniel Eisert
Anzeige
Danke an alle
14.08.2006 18:47:51
Daniel
Hallo,
Danke für die Antworten.
Da muß man wohl auf eine spätere Version warten.
Daß man aus einer Funktion heraus keine anderen Zellen manipulieren kann, macht innerhalb der Excel-Logik ja noch Sinn, aber der Übergebene Zellbereich sollte schon mit Specialcells manipulierbar sein.
Würde sich nur positiv auf die Verarbeitungsgschwindigkeit auswirken.
Gruß, Daniel
AW: Danke an alle
15.08.2006 15:48:54
Luschi
Hallo Daniel,
habe mal ein bischen rumgetestet und hier ist das Resultat:
https://www.herber.de/bbs/user/35837.xls
Jedesmal, wenn in Spalte A eine Eingabe erfolgt, wird in Zelle A1 ein String geschrieben, der die Zellen enthält, die Zahlen- und keine Formelwerte aus der Spalte A enthalten.
In der UdF wird daraus ein Zellbereich erzeugt und aufsummiert.
Gruß von Luschi
aus klein-Paris
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige