samtrex
Goto Top

Reihenfolge der Funktionsabarbeitung in Zellen

Datenexport von MS-Access 2010 (mit Oracle-Anbindung) nach MS-Excel 2010.
Excel führt Zellenfunktionen aus und kommt bei gleicher Berechnung auf unterschiedliche Ergebnisse.

Hallo zusammen,
ich habe ein kleines "Verständnisproblem" in der Abarbeitung von Zellenfunktionen.

Wie oben bereits angedeutet exportiere ich aus einem Access-Frontend Daten nach Excel.
In dem Excel-Workbook habe ich ua. eine selbstgeschriebene Funktion:
Hier auf das Nötigste runtergekürzt...
Function GET_MY_FEHLER() As Variant
    If Range("AB2").Value = "Eichung" Then
                GET_MY_FEHLER = "Eichwert"
    Else
                GET_MY_FEHLER = "Verkehrsfehler"
    End If
End Function
Diese Funktion wird nun auf mehrere Zellen auf dem Tabellenblatt angewendet:
Auf Zelle AB109 und auch weiter oben Zelle AB51. Wie in der Funktion zu sehen hängt
der Rückgabewert unter anderem vom Inhalt der Zelle AB2 ab.
Der Inhalt von Zelle AB2 wird durch Access in ein anderes Tabellenblatt geschrieben.

Gehen wir jetzt mal davon aus das Access den Inhalt "Eichung" in die Zelle schreibt...
In Zelle AB109 steht die gleiche Formel wie in Zelle AB51!
Jedoch bekomme ich in Zelle AB51 das Ergebnis: "Eichwert"
und in Zelle AB109 das Ergebnis: "Verkehrsfehler"

Warum?????

Wenn ich mich mit Haltepunkten durch das Macro hangle kommt dabei heraus das Excel die Zellenformeln
offensichtlich von unten nach oben abarbeitet. Schreibe ich nämlich nach dem Öffnen von Hand nocheinmal
"Eichung" in Zelle AB2 so erscheint auch in Zelle AB109 "Eichwert"!!!

Kann das jemand bestätigen?
Was kann ich tun um die Funktionsabarbeitung solange anzuhalten bis alles von Access geschrieben wurde?!

Als Workarround schreibe ich nun am Ende meines Startmacros den Wert per VBA in Zelle AB2.

Danke schonmal.
Gruß Sam

Content-ID: 179238

Url: https://administrator.de/contentid/179238

Ausgedruckt am: 22.11.2024 um 12:11 Uhr

dog
dog 20.01.2012 um 18:51:58 Uhr
Goto Top
Was kann ich tun um die Funktionsabarbeitung solange anzuhalten bis alles von Access geschrieben wurde?!

http://stackoverflow.com/questions/154434/how-do-you-get-excel-to-refre ...
SamTrex
SamTrex 20.01.2012 um 19:38:40 Uhr
Goto Top
Coooool!!!
Genau was ich brauche.
Vielen Dank Doc!

Gruß Sam
SamTrex
SamTrex 24.01.2012 um 11:55:52 Uhr
Goto Top
Hallo nochmal.
Leider war "Application.Calculate" nicht das richtige... :/
Das wirkt offensichtlich nur auf Excel-Funktionen ala "=WENN(..."

Ich habe jedoch eine selbstgeschriebene Funktion.
Allerdings habe ich noch etwas anderes gefunden: "Application.Volatile"

Excel-Entwicklerreferenz
Application.Volatile-Methode
Kennzeichnet eine benutzerdefinierte Funktion als veränderlich. Solche Funktionen werden immer neu berechnet, wenn in einer beliebigen Zelle des Arbeitsblatts eine Berechnung durchgeführt wird. Nicht veränderliche Funktionen werden nur dann neu berechnet, wenn sich die Eingabevariablen ändern. Diese Methode wird in der Regel in einer benutzerdefinierten Funktion zur Berechnung einer Arbeitsblattzelle verwendet, andernfalls hat sie keine Auswirkung.

Function My_Func()
    Application.Volatile
    ' 
    '    Remainder of the function
    ">
End Function