Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
648to652
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
648to652
648to652
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

modul exit

modul exit
12.08.2005 14:13:07
teraflop
hallo zusammen
ich suche eine möglichkeit ein modul nach 3 sec. runtime zu verlassen und dann weiterzurechnen mit einem anderen modul.
etwa:
'If modul15.calc runtime grösser("00:00:03") Then
'Exit sub
'End if
wie kann ich das programmieren?
Viele Grüsse teraflop

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: modul exit
12.08.2005 14:16:26
Matthias
Hallo teraflop,
du kannst höchstens eine Prozedur verlassen, z.B. wenn sie in einer Schleife prüft, ob eine (globale) Variable einen bestimmten Wert angenommen hat.
Was hast du denn genau vor?
Gruß Matthias
AW: modul exit
12.08.2005 14:22:46
teraflop
matthias hallo
ich muss ein modul15.calc (da ist eine schleife drin) mitten in der berechnung aufhören.
dann muss ich mit einem anderen modul die berechnungs schleife beginnen.
will das ganze ausprobieren, weil meine berechnung, nachdem ich neue daten in ein .xls geladen habe nicht mehr so schnell performed!
die daten sind wahrscheinlich in einem anderen stack geladen und dann hat er länger die zu suchen!
löse ich das "manuell" wie oben beschrieben geht's wieder schnell!oh wunder.
hast du eine Idee?danke
Anzeige
AW: modul exit
12.08.2005 14:20:04
Andi
Hi,
folgendes Makro zählt testweise drei Sekunden lang einen Wert in der StatusBar hoch.
Hilft Dir das?

Sub test()
Dim anfang As Date
anfang = Now
Application.StatusBar = 0
Do
If Now = anfang + "00:00:03" Then Exit Sub
Application.StatusBar = Application.StatusBar + 1
Loop
End Sub

Schönen Gruß,
Andi
AW: modul exit
12.08.2005 14:28:29
teraflop
muss das mal ansehen.ob es hilft.danke
ich habe noch nie mit statusbar befehl gearbeitet
gruss teraflop
AW: modul exit
12.08.2005 14:31:07
Andi
Hi,
die StatusBar hat nix mit Deinem Problem zu tun, die dient nur dazu, dass das Makro irgendwas macht, womit es halt nach 3 Sekunden sichtbar wieder aufhört.
Die entscheidenden Zeilen für Dich, zumindest wenn ich Dich richtig verstanden habe, sind:
Dim anfang As Date
anfang = Now
und
If Now = anfang + "00:00:03" Then Exit Sub
Schönen Gruß,
Andi
Anzeige
AW: modul exit
12.08.2005 14:38:28
teraflop
dann kann ich das so schreiben:

Sub test()
Dim anfang As Date
anfang = Now
Application.StatusBar = 0
Application.run "modul15.calc"
Do
If Now = anfang + "00:00:03" Then Exit Sub
Application.StatusBar = Application.StatusBar + 1
Loop
End Sub

die 2 zeilen mit dem statusbar braucht es aber nach wie vor?oder kann ich die weglassen.
das mit "VBA gut" ist auch so gemeint? - o.T.
12.08.2005 14:40:30
Matthias
-
AW: das mit "VBA gut" ist auch so gemeint? - o.T.
12.08.2005 14:48:45
teraflop
ja danke, ich weiss dass ihr alle viel schlauer seit.
darum stelle ich ja auch die frage!
im prinzip will ich mit diesem unterbruch in der schlaufe und dem neustart derselben, erreichen, dass die daten der ersten berechnungsschritte am richtigen stack angekommen sind.
finde die überlegung gar nicht so schlecht.mindestens manuell gehts ja so.jetzt auomatisiere ich das halt.
anyhow danke!teraflop
Anzeige
AW: Sorry, aber...
12.08.2005 15:43:31
Matthias
Hallo teraflop,
dein Vorschlag war so offensichtlich falsch, er las sich etwas so:

Sub test()
'merke Anfangszeit
anfang = Now
'Starte Prozedur "Calc" aus Modul1
Application.run "modul15.calc"
' HIER gehts erst weiter, wenn Calc zu Ende ist:
' Schleife verlassen, wenn GENAU 3 Sekunden vergangen sind
' (nicht vorher und nicht nachher! - diser Fehler ist aber von Andi ;-)
Do
If Now = anfang + "00:00:03" Then Exit Sub
Loop
End Sub

Mein Vorschlag:
Du könnstest globale Variablen definieren, die Als Abbruchkriterium dienen, z.B. so:

Public Cancel_Calc As Boolean
Sub C_Calc()
Cancel_Calc = True
End Sub
Sub test()
Application.OnTime Now + TimeValue("0:00:03"), "C_Calc", , True 'in 3 sek. wird die Prodedur "C_Calc" gestartet
Do
Range("A1") = Range("A1") + 1
DoEvents
Loop Until Cancel_Calc = True
End Sub

Was meinst du eigenstlich damit:
im prinzip will ich mit diesem unterbruch in der schlaufe und dem neustart derselben, erreichen, dass die daten der ersten berechnungsschritte am richtigen stack angekommen sind.
Welcher Stack? Muss man sich bei VBA mit Stacks beschäftigen?
Gruß Matthias
Anzeige
AW: cancel_calc as boolean
12.08.2005 19:05:04
teraflop
matthias ja, das ist ein sehr guter vorschlag.
ich muss das testen.gebe dir ein feedback.
mein Ziel ist: eine calc-schlaufe nach 3 sec. zu unterbrechen. um sie dann erneut zu starten. Warum? Die ganze calc dauert ca.25 sec. wenn die calc aber "mauell" unterbrochen wird, und neu gestartet, dauert die ganze calc nur noch 7 sec.meine loops laufen viel schneller. warum? weil die daten im .xls(mit der calc) von einem anderen .xls eingelesen werden und dabei nicht im gleichen "stack" im innern des computer gespeichert sind. ich kann's mir nur so erklären, weil es nachdem unterbruch immens schneller geht!
jetzt will ich das im macro lösen.
ich steige aus der calc mitten in den ersten berechnungen aus(nach 3 sec.), dann sind alle relevanten input daten am richtigen platz(im stack oder im RAM),weil's ja schon fertige ergebnisse liefert.beim neustart ist der weg im stack eröffnet, er muss nur noch mit neuen inputs gefüllt und nicht mehr ganz neu gesucht werden.
an und für sich ein job, den ein compiler übernimmt.wenn ich wüsste, wie ich das problem im program DIREKT lösen könnte, wäre ich auch froh!
habe probiert mit updateLinks=true und workbook.save vor dem calc start,was nichts genützt hat.
ich will erreichen, das meine calc's teraflop mässig abgehen!
gruss teraflop
Anzeige
AW: cancel_calc as boolean
12.08.2005 21:58:48
Matthias
Hallo teraflop,
Deine Erklärung kann ich nun nicht nachvollziehen aber:
setze mal an den Anfang der Prozedur
Application.Calculation = xlCalculationManual
und ans Ende
Application.Calculation = xlCalculationAutomatic
Das hilft machmal ganz gewaltig...
Gruß Matthias
AW: xlcalculation manuell
12.08.2005 22:32:59
teraflop
hallo
manuell und dann wieder automatic habe ich auch schon eingebaut.ja das hilft.aber hier nicht mehr
habe sogar den calculation interrupt key=1 eingesetzt, es half alles nichts
mit diesem 3 sec. exit sub läuft die sache durch, aber auch nur in NULL durchgängen(mit den alten daten)
d.h.wenn ich vorher die neuen daten lade geht's auch nicht schneller!
hast du vielleicht eine idee, welche befehle ich noch zum updaten verwenden könnte.
mit neuen daten und .save gehts auch langsam.
updateLink=true verwende ich schon!
einziger schneller weg bis jetzt ist ein manueller ausstieg und dann das modul nochmals d'rüberlaufen lassen.
gruss teraflop
Anzeige
AW: xlcalculation manuell
12.08.2005 22:59:34
Matthias
Hallo teraflop,
ein wirklich interessantes und seltenes Problem...
Da ich mir das konkret nicht vorstllen kann, wäre es hilfreich, wenn du mal eine Beispieldatei hochladen oder den vermeintlich langsamen Code posten könntest.
Gruß Matthias
AW: slow/fast calc
13.08.2005 07:42:03
teraflop
guten morgen matthias,
es ist komplex
diese calc spuhlt ein loop ab und führt zu einem solver der wiederum looped.
-ich habe ein .xla mit den modulen als addin.
-eine datenbank auf COMM.xls(hier geht die calc.xls d'rüber)
-einen datenfeed von test.xls durch ein interface.xls zu COMM.xls
das interface wird mit updateLinks =true beendent, bevor ich das calc.xls starte, gebe ich auch einen updateLinks =true befehl.
ich verwende auch die befehle appl.screenupdate =false und wieder true.(um kapazität zu sparen)
interessant: beim ausstieg aus calc.xls mit ctrl+break und end , und dann die calc mit der maus angeclickt produziert einen schnellen durchlauf.
-das wollte ich nun mit macro tun!
-ich verwende auch sendKey befehle darin
-der ctrl+break und end ist manuell eine "hammer"notlösung. nicht profihaft!
-tests noch nicht zufriedenstellend, ich teste weiter
ich kann dir unmöglich die ganze steuerung ins web laden
gruss teraflop
PS vielleicht kommt dir als profi aber etwas dazu in den sinn?!
Anzeige
AW: slow/fast calc
13.08.2005 07:55:32
teraflop
nachtrag:
ich kann die berechnungen für den solver nicht starten wenn die appl. auf calcmanuell gesetzt ist,sie muss auf automatic sein hier
der solver läuft in runtime mit den realen echtzeit daten
?könnten die befehle der send keys eine behinderung darstellen?
-ctrl+break
-end
-ctrl+esc
auch habe ich schon versucht die appl mit wait zu stoppen, um den daten zeit zu lassen 'runterzufahren, um erst dann wieder zu starten.(dann geht es per mausclick nämlich schnell)
gruss teraflop
AW: modul exit
12.08.2005 14:49:18
Andi
Hm, ich hoffe mal, wir reden hier nicht aneinander vorbei, deshalb mal noch offen...
Also, die StatusBar-Zeilen kannst Du auf jeden Fall weglassen, das waren nur Dummies, damit das Makro irgendwas macht.
Ich hatte das so verstanden, dass Du bestimmte Berechnungen durchführst, die Du nach drei Sekunden abbrechen willst; in dem Fall gehört der Code Deiner Berechnungen in die Do...Loop-Schleife, nach der if-Abfrage.
Wenn "modul15.calc" irgendwas externes ist, was Du aufrufst, dann geht das natürlich nicht, weil das Abbruchkriterium ja in den Code reinmuss, der grade läuft.
Schönen Gruß,
Andi
Anzeige
AW: modul exit
12.08.2005 15:02:24
teraflop
in dieser phase rufe ich nur interne sachen in excel auf.
das mit dummy ist klar jetzt.
ich test das mal und würde mich wieder melden
danke andi
teraflop

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige