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

Ein eher allgemeines Problem mit Funktionen

Ein eher allgemeines Problem mit Funktionen
05.12.2003 10:23:12
MaxG
Guten Morgen, Forum.

Gleich vorne weg: die beiden folgenden Routinen stehen in einem Add-In und werden bei Bedarf nur in

die jeweiligen Anwendungen eingebunden und laufen seit zig Monaten in allen möglichen Anwendungen und

auch mit allen möglichen Datenarten (also: Datum, String, Zahlen etc.) einwandfrei.
(Das Problem kommt weiter unten - Gemach !)

Zu diesen Routinen muß man folgendes wissen:
Jede Spalte hat bei mir eine Überschrift und nur diese Überschrift kriegt einen Namen und diesen

Namen spreche ich als Range-Objekt an; deshalb: ColHeadObj as Range.
Ich habe auch niemals 2 Tabellen untereinander.


Function xFind(SearchValue, ColHeadObj As Range) As Range
Set xFind = xGetDC(ColHeadObj, True). _
Find(SearchValue, LookIn:=xlFormulas, matchcase:=True, lookat:=xlWhole)
End Function



Function xGetDC(ColHeadObj As Range, MitHeader As Boolean) As Range
Dim LetzteZeile As Long
Dim ErsteZelle As Long
With Worksheets(ColHeadObj.Parent.Name)
LetzteZeile = .Cells(Rows.Count, ColHeadObj.Column).End(xlUp).Row
ErsteZelle = ColHeadObj.Row
If Not MitHeader Then ErsteZelle = ErsteZelle + 1
If (LetzteZeile < ErsteZelle) Then LetzteZeile = ErsteZelle
Set xGetDC = .Range(.Cells(ErsteZelle, ColHeadObj.Column), .Cells(LetzteZeile,
ColHeadObj.Column))
End With
End Function


Soweit das Add-In.

Meine aktuelle Arbeitsmappe soll als eine komfortable Stechuhr funktionieren.
In dieser Mappe gibt es u.a. die folgende Funktion in gekürzter Form:


Function Tagesgesamtzeit_Ermitteln(datum) As Single
Dim Gefunden As Range
Dim Gesamtzeit As Single
Tagesgesamtzeit_Ermitteln = 0
Set Gefunden = xFind(datum, xDatum) 'xDatum wird in einer Ini-Routine korrekt gesetzt.
If Gefunden Is Nothing Then Exit Function
Tagesgesamtzeit_Ermitteln = Gesamtzeit
End Function


Wenn ich diese Routine bspw. so aufrufe:

Anwesenheit = Tagesgesamtzeit_Ermitteln(irgendeindatum)

dann greift er absolut korrekt auf den entsprechenden Bereich zu, sammelt die einzelnen Zeiten des

übergebenen Datums, ermittelt die Anwesenheitszeit und hat fertig.

Da gibt es nix zu meckern.

Aber: wenn ich die Ermittlungsroutine aus einer Zelle heraus ausführen will:
=Tagesgesamtzeit_Ermitteln(A6)
produziert das System immer Null.
Und das kommt daher, daß "Gefunden" IMMER nothing enthält, egal was ich auch anstelle.

Frage:
Gibt es vielleicht irgendwelche Einschränkungen beim Aufruf von Funktionen aus den Arbeitsblättern

heraus ?
Ich hab mal versucht, innerhalb der Funktion einen Bereich zu markieren; hat auch nicht geklappt.
Noch ein Hinweis: es kommen KEINE Fehlermeldungen hoch.

Ich danke Euch schon mal im voraus für Eure Bemühungen.

Max

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ein eher allgemeines Problem mit Funktionen
05.12.2003 10:40:17
Michael Scheffler
Hi,

was mir als erstes auffällt, ist fehlendes Application.Volatile am Anfang Deiner Funktionen.

Gruß

Micha
AW: Ein eher allgemeines Problem mit Funktionen
05.12.2003 10:48:01
MaxG
Dank Dir für die schnelle Reaktion, aber auch hier bleibt Gefunden auf nothing.

MaxG
AW: Ein eher allgemeines Problem mit Funktionen
05.12.2003 10:54:32
MaxG
Hallo Micha.
Dieses VOLATILE habe ich bewußt weggelassen, da er in der Regel nicht immer neu rechnen muß; an den Zeiten der Vergangenheit wird sich kaum mehr etwas ändern. Insofern macht mir dieser Eintrag nicht viel Sinn.

Max

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige