Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1332to1336
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
Inhaltsverzeichnis

Makro: Einzelschritt Abfolge unerwartet

Makro: Einzelschritt Abfolge unerwartet
07.10.2013 11:28:34
Obelix
Hallo.
Ich habe das Problem, das unerwartet bei einer Range-Objekt.ClearContents eine Sprung auf eine Funktion (time2date) ausgeführt wird, den ich mir nicht erklären kann
Die Function wird in der gesamten Sub nicht verwendet, liegt nur zusammen mit weitern Subs und Functions in einem Modul.
Sowohl im Einzelschritt als auch ein BrakePoint auf time2date zeigt das die Funktion angesprungen wird.
Der Einzelschritt zeigt dann, das es immer nach einer Range-Objekt.ClearContents Anweisung in die Function geht!?
Einer eine Idee?
Danke
_______________________________Modul1______________________________________

Public Function time2date(tt_time As Long, reference As Date) As Date
(...)' Weiterer Code
End Function

___________________________________________________________________________
(...) ' Weitere Functions
___________________________________________________________________________

Public Sub ImportAAA()
(...)
Range("A1").ClearContents
Range("B14:T2500").ClearContents
' hier nach geht es dann im Einzelschritt mit time2date weiter
strDatei = Application.GetOpenFilename("All Files (*.*), *.*")
(...)
End Sub

___________________________________________________________________________

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro: Einzelschritt Abfolge unerwartet
07.10.2013 11:32:39
Hajo_Zi
ich kann den Fehler nicht nachvollziehen. Ich habe Folgenden Lauffähigen Code benutz.
Option Explicit
Public Function time2date(tt_time As Long, reference As Date) As Date
'(...)' Weiterer Code
End Function
' ___________________________________________________________________________
' (...) ' Weitere Functions
___________________________________________________________________________
Public Sub ImportAAA()
Dim strDatei As String
'(...)
Range("A1").ClearContents
Range("B14:T2500").ClearContents
' hier nach geht es dann im Einzelschritt mit time2date weiter
strDatei = Application.GetOpenFilename("All Files (*.*), *.*")
'(...)
End Sub


Anzeige
AW: Makro: Einzelschritt Abfolge unerwartet
07.10.2013 11:41:26
EtoPHG
Hallo Obelix,
Irgendwo in deiner Tabelle steht die Formel =time2date(Bezug;Bezug),
wobei mind. einer deiner Bezüge auf eine Zelle im Bereich B14:T2500 zeigt.
Such also in deinen Formeln und nicht im Code!
Gruess Hansueli

AW: Makro: Einzelschritt Abfolge unerwartet
08.10.2013 10:49:59
Obelix
Es wurde in ImportAAA lesend auf ein Tabellenblatt zugegriffen, in dem in einem nicht gelesenen Bereich die Funktion time2date verwendet wird. Dadurch wird offensichtlich das Event zum Neuberechnung ausgelöst.
Referenzen oder sonstige Verwendung der Zeilen mit time2date gibt es nicht.
War mir in der Tat nicht klar, das das zur Neuberechnung führt. Insbesondere reproduzierbar immer bei
Range(...).ClearContents. Auch wenn Range nix mit time2date zu tun hat und nicht mal auf Tabellenblatt verweist in dem time2date verwendet wird.
Danke

Anzeige
AW: Makro: Einzelschritt Abfolge unerwartet
08.10.2013 18:56:51
EtoPHG
Hallo Obelix,
Ich kann mir nicht vorstellen, dass die Funktion ausgelöst wird, wenn kein Bezug (ob direkt oder über andere Formelverweise) zum gelöschten Bereich besteht. Ausser in deinem (nicht gezeigten) Code der Funktion, steht noch irgendwo Application.Volatile, was aber auf schlechte Programmierung zurückzuführen wäre.
Gruess Hansueli

Na, da habe ich mitunter einen anderen ...
08.10.2013 19:18:51
Luc:-?
…Eindruck gewonnen, Hansueli,
der darauf schließen lässt, dass noch andere Faktoren eine Rolle spielen könnten, die ich hier aber nicht so o.w. vermuten will… ;-)
Ansonsten scheinst du ja (wie auch ich) nicht gerade ein Anhänger von Application.Volatile zu sein! In Subprozeduren ist das ja ohnehin überflüssig und in Fktt kann man auch darauf verzichten. Falls die Art des FktsErgebnisses das im TabBlatt unbedingt erforderlich macht, kann man ja der jeweiligen Fml eine volatile StandardFkt hinzufügen.
Gruß Luc :-?

Anzeige
Das sind keine anderen Faktoren...
08.10.2013 21:45:41
EtoPHG
beteiligt Luc,
Das Ganze ist schlicht und ergreifend eine Sache des Dependency-Trees von Excel, der abhängig von den verwendeten Formeln, deren Bezüge und Veränderungen von Zellen solcher aufgebaut wird. Und ja, Application.Volatile ist bei UDF unnötig, wenn deren Input-Parameter sauber deklariert (möglichst als Range(s)) definiert sind.
Gruess Hansueli

Input-Parameter als Range deklariert? Dann ...
09.10.2013 02:01:48
Luc:-?
…kann man keine universelle UDF schreiben, die auch DatenFelder (aus Ausdrücken) verarbeitet, Hansueli,
sondern nur belanglos-langweiligen Krimskrams, der ggf auf Hilfszellen angewiesen ist! Die älteren XlStandardFktt können ebenso wie einige der allerneuesten auch nicht so deklariert worden sein (egal in welcher Sprache), sonst wären diverse Formeln der FormelArtisten gar nicht möglich! So, wie du empfiehlst, haben wohl nur die zwischenzeitlich von MS beauftragten Firmen XlFktt (RANG & Co) programmiert. Und dann gibt's ja auch noch UDF, die nicht Daten, sondern Formate verarbeiten… Aber da kann man sich ja ggf auch wie erwähnt behelfen.
Ich habe jedenfalls bemerkt, dass einige meiner (komplexeren) UDF im AutoKalk-Modus von Xl gern immer wieder neu berechnet wurden, obwohl sie eigentlich nicht von DatenÄnderungen betroffen waren, sondern nur eine Fml mit gleicher UDF (auch etwas anderer Argumentierung) neu berechnet wurde, die auf die gleichen (unveränderten) Daten zurückgriff, was in UDF-Entwicklungs-TestDateien wohl nichts Ungewöhnliches sein dürfte.
Gruß Luc :-?

Anzeige
Einen Auslösungsfaktor hätte ich noch, ...
10.10.2013 02:04:53
Luc:-?
…Obelix (& Hansueli),
die Datensicherung! Je nachdem, welches ZeitIntervall eingestellt wurde, kann man den Eindruck erhalten, dass (bei jeder kleinen Änderung) andauernd neu berechnet wird. Wenn neben AutoKalkModus auch noch Iteration aktiv ist, kann's (zB bei -nur meinen?- EntwicklungsTestDateien) schon mal ätzend wdn. ;-)
Das gilt dann übrigens nicht nur für alle Blätter der gerade aktiven Mappe, sondern auch alle anderen evtl geöffneten xlDateien!
Gruß Luc :-?

Also irgendwie scheint dir die Fktionsweise ...
07.10.2013 16:49:51
Luc:-?
…von VBA nicht ganz klar zu sein, Obelix;
ein HaltePkt in einer UDF nutzt in diesem Zusammenhang gar nichts, wenn diese auch in einer Fml verwendet wird und deine SubProzedur etwas am Blatt verändert und damit Neuberechnungen auslöst (detaillierter →EtoPHGs AW).
Gruß Luc :-?
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige