Eigene Funktionen aktualisieren nicht im Hintergrund

23/06/2009 - 01:13 von Norbert | Report spam
Hallo zusammen,

ich habe folgende eigene Funktion geschrieben:


Function BuchmacherWerteInÜbersichtHolen(Buchmacher As String, Datenfeld As
String) As Variant

Dim i As Integer
Dim iPB As Integer ' PB = Position des Buchmachers


iPB = Application.Match(Buchmacher, Range("Überschriften"), 0)

If Datenfeld = "FX" Then
i = 1 ' Wàhrungseinheit steht unter Buchmachernamen
Else
'Wo steht in der Buchmacher-Einzelaufstellung das gesuchte Datenfeld ?
i = Application.Match(Datenfeld, Range(Cells(1, iPB), Cells(1, iPB +
10)), 0)
End If

BuchmacherWerteInÜbersichtHolen = Range("A1").Offset(1, iPB - 2 + i)

End Function


In einer Exceltabelle habe ich ca 30 x nebeneinander je 10 Spalten, in denen
ich die Umsàtze für bestimmte Buchmacher-Konten verwalte, angelegt. Die 10
Spalten sehen für jeden Buchmacher gleich aus. In der jeweils obersten Zeile
ziehe ich die Summenwerte der einzelnen Spalten (z. B. Saldo, Offene Wetten,
Einzahlungen, Auszahlungen, etc.)

Im Vorderen Bereich der Tabelle existiert eine Zeile für jeden Buchmacher,
in denen ich die Summen einlese und in einer Übersicht alle 30 Buchmacher
zusammenfasse. Der oben beschriebenen Funktion wird jetzt der Buchmacher-Name
(der in den 10 Spalten des Buchmachers jeweils oben links steht) sowie das
Datenfeld übergeben, dessen Summe ich für den jeweiligen Buchmacher in meiner
Übersicht darstellen will.

Die Funktion sucht iin Spalte A (Range("Überschriften")) nach dem
Buchmachernamen und dann, je nach übergebenem Datenfeld, die gewünschte Zahl.

DAS FUNKTIONIERT GANZ PRIMA.

In der Buchmacherübersicht existiert eine Summenzeile, die alle
zurückgegebenen Summenzeilen der einzelnen Buchmacher addiert.

Jetzt zum eigentlichen Problem. Diese Tabelle kopiere ich ein paar Mal,
vergebe verschiedene Tabellennamen und lege in einer weiteren
Übersichtstabelle jeweils eine Zeile für jede Tabelle an, in der ich durch
einfache Bezüge auf die jeweiligen Summenzeilen der einzelnen
Buchmacherübersichten der einzelnen Tabellen zugreife.

Wenn ich mir diese Übersicht anschaue, liegen somit alle anderen Tabellen im
Hintergrund. Diese werden im Hintergrund nicht berechnet. Erst wenn ich sie
in den Vordergrund hole und die Datenfeldüberschriften, die mit der Funktion
übergeben werden einmal kopiere und in sich selbst einfüge, werden die Zellen
neu berechnet. Das làßt sich zwar bei Auswahl des Arbeitsblattes
automatisieren, ist jedoch nicht Sinn und Zweck der Angelegenheit.

Warum verlieren die Zellen die im Hintergrund in anderen Tabellenblàttern
eigene Funktionen beinhalten eigentlich ihre Werte, wenn das Arbeitsblatt
nicht im Vordergrund liegt? Der Ausgabewert ist dann jeweils #WERT! .

Danke für Eure Hilfe.

Norbert
 

Lesen sie die antworten

#1 Thomas Ramel
23/06/2009 - 08:16 | Warnen spam
Grüezi Norbert

Norbert schrieb am 23.06.2009

Function BuchmacherWerteInÜbersichtHolen(Buchmacher As String, Datenfeld As
String) As Variant

Dim i As Integer
Dim iPB As Integer ' PB = Position des Buchmachers

iPB = Application.Match(Buchmacher, Range("Überschriften"), 0)



Dieser Range hier ist nicht als Parameter übergeben - daher kann sich die
Funktion nicht automatisch aktualisieren, wenn sich darin etwas veràndert.
Dei Funktion berechnet sich nur bei der Eingabe und Abschluss mit Return in
der Zelle (oder spàteren F2+Return).


If Datenfeld = "FX" Then
i = 1 ' Wàhrungseinheit steht unter Buchmachernamen
Else
'Wo steht in der Buchmacher-Einzelaufstellung das gesuchte Datenfeld ?
i = Application.Match(Datenfeld, Range(Cells(1, iPB), Cells(1, iPB +
10)), 0)



...und auch hier

End If

BuchmacherWerteInÜbersichtHolen = Range("A1").Offset(1, iPB - 2 + i)



...sowie hier ist daselbe anzumerken.

End Function

In einer Exceltabelle habe ich ca 30 x nebeneinander je 10 Spalten, in denen
ich die Umsàtze für bestimmte Buchmacher-Konten verwalte, angelegt. Die 10
Spalten sehen für jeden Buchmacher gleich aus. In der jeweils obersten Zeile
ziehe ich die Summenwerte der einzelnen Spalten (z. B. Saldo, Offene Wetten,
Einzahlungen, Auszahlungen, etc.)

Im Vorderen Bereich der Tabelle existiert eine Zeile für jeden Buchmacher,
in denen ich die Summen einlese und in einer Übersicht alle 30 Buchmacher
zusammenfasse. Der oben beschriebenen Funktion wird jetzt der Buchmacher-Name
(der in den 10 Spalten des Buchmachers jeweils oben links steht) sowie das
Datenfeld übergeben, dessen Summe ich für den jeweiligen Buchmacher in meiner
Übersicht darstellen will.

Die Funktion sucht iin Spalte A (Range("Überschriften")) nach dem
Buchmachernamen und dann, je nach übergebenem Datenfeld, die gewünschte Zahl.

DAS FUNKTIONIERT GANZ PRIMA.



Eben leider nicht, resp. nur dann wenn die Funktion bearbeitet und mit
Return abgeschlossen wird.

Jetzt zum eigentlichen Problem. Diese Tabelle kopiere ich ein paar Mal,
vergebe verschiedene Tabellennamen und lege in einer weiteren
Übersichtstabelle jeweils eine Zeile für jede Tabelle an, in der ich durch
einfache Bezüge auf die jeweiligen Summenzeilen der einzelnen
Buchmacherübersichten der einzelnen Tabellen zugreife.

Wenn ich mir diese Übersicht anschaue, liegen somit alle anderen Tabellen im
Hintergrund. Diese werden im Hintergrund nicht berechnet. Erst wenn ich sie
in den Vordergrund hole und die Datenfeldüberschriften, die mit der Funktion
übergeben werden einmal kopiere und in sich selbst einfüge, werden die Zellen
neu berechnet. Das làßt sich zwar bei Auswahl des Arbeitsblattes
automatisieren, ist jedoch nicht Sinn und Zweck der Angelegenheit.

Warum verlieren die Zellen die im Hintergrund in anderen Tabellenblàttern
eigene Funktionen beinhalten eigentlich ihre Werte, wenn das Arbeitsblatt
nicht im Vordergrund liegt? Der Ausgabewert ist dann jeweils #WERT! .



Übergib die Bereiche auf die sich die Funktion beziehen soll sauber als
(weiteren) Parameter, dann klappt das auch so wie es soll.

Wenn Du weitere Unterstützung dabei benötigst, dann erstelle bitte eine
kleine Demo-Mappe und lade sie auf einen WebSpace hoch. Nenne dann hier den
Link, dann müssen wir den Aufbau nicht selbst handstricken.


Mit freundlichen Grüssen
Thomas Ramel

- MVP für Microsoft-Excel -
[Vista Ultimate SP-1 / xl2007 SP-1]

Ähnliche fragen