Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1204to1208
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 soll Makro stoppen

Makro soll Makro stoppen
Reinhard
Hallo Wissende,
sscheinbar hat den Code sogar Sepp geprüft, aber bei mir klappt das Stoppen nicht, die Hauptprozedur läuft unbekümmert weiter.
Die Hauptcodes:
Sub Starten()
Application.OnTime earliesttime:=Now + TimeSerial(0, 0, 1), procedure:="Hauptprozedur",  _
schedule:=True
End Sub
Sub Stoppen()
On Error Resume Next
Application.OnTime earliesttime:=Now + TimeSerial(0, 0, 1), procedure:=gsMacro, schedule:=False
End Sub
Danke ^ Gruß
Reinhard

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Makro soll Makro stoppen
11.03.2011 22:44:47
Josef

Hallo Reinhard,
wie kommst du drauf, das ich diesen Code geprüft habe?
Wenn, dann geht das so.
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Const cstrProc As String = "Hauptprozedur"
Const clngInterval As Long = 5 'Intervall in Sekunden
Dim dblNextTime As Double

Sub start()
  dblNextTime = Now + TimeSerial(0, 0, clngInterval)
  Application.OnTime dblNextTime, cstrProc
End Sub

Sub stopp()
  On Error Resume Next
  Application.OnTime dblNextTime, cstrProc, Schedule:=False
End Sub

Sub Hauptprozedur()
  MsgBox ";-))"
  start
End Sub


Gruß Sepp

Anzeige
AW: Makro soll Makro stoppen
11.03.2011 23:07:50
Reinhard
Hallo Josef,
naja, zumindest mal angeschaut :-)
Ich weiß jetzt wodran das bei mir lag. Warum weiß ich nocht nicht, aber okay, kriege ich mit Tests raus oder nicht. zumindest weiß ich jetzt bei Ontime sicherheitshalber doch globale Variablen o,ä benutzen.
Denn der Unterschied zwischen klappen und nicht klappen ist m.E. nur mein Welassen der globalen Variablen.
Sub starten()
dblNextTime = Now + TimeSerial(0, 0, clngInterval)
Application.OnTime dblNextTime, cstrProc
End Sub
Sub stoppen()  'Klappt'
On Error Resume Next
Application.OnTime dblNextTime, cstrProc, Schedule:=False
End Sub
Sub starten2()
Application.OnTime Now + TimeSerial(0, 0, 5), "Hauptprozedur"
End Sub
Sub stoppen2()    'klapppt Nicht.
On Error Resume Next
Application.OnTime Now + TimeSerial(0, 0, 5), "Hauptprozedur", Schedule:=False
End Sub

Danke dir
Gruß
Reinhard
Anzeige
AW: Makro soll Makro stoppen
11.03.2011 23:38:49
Reinhard
Hallo Josef,
ich kriege es nicht hin.
https://www.herber.de/bbs/user/73937.xls
Nachfolgend der Code.
Gruß Reinhard
Option Explicit
Const cstrProc As String = "Hauptprozedur"
Const clngInterval As Long = 1 'Intervall in Sekunden
Dim dblNextTime As Double
Sub starten()
dblNextTime = Now + TimeSerial(0, 0, clngInterval)
Application.OnTime dblNextTime, cstrProc
End Sub
Sub stoppen()
On Error Resume Next
MsgBox "huhu"
Application.OnTime dblNextTime, cstrProc, Schedule:=False
End Sub
Sub Hauptprozedur()
Call BildschirmAufbauen
Call Spiel
End Sub
Sub Spiel()
Dim S As Long, Z As Long, T As Single
S = 1
Z = 10
Rows("1:22").ClearContents
Range("a2").Resize(20, 15).Font.Name = "Webdings"
Range("A2").Resize(20, 15).Font.Size = 20
While 1
T = Timer
Cells(Z, S).Value = ""
Z = Z + Int(Rnd() * 3 - 1)
Cells(Z, S + 1).Value = Chr(98)
S = S + 1
If S = 12 Then
S = 1
Cells(Z, 12).Value = ""
End If
While T + 1 > Timer
DoEvents
If Z > 16 Then Z = 16
If Z 

Anzeige
AW: Makro soll Makro stoppen
12.03.2011 05:10:33
fcs
Hallo Reinhard,
das Problem ist, das deine Prozedur "Spiel" in eine Endlosschleife (Wend...While) gerät. Solange das Makro "Spiel" läuft, kannst du kein weiteres Makro in der Datei starten.
Wenn du per OnTime deinen Radfahrer "hüpfen" lassen willst, dann muss du deine Prozeduren radikal umstricken.
Gruß
Franz
Option Explicit
Const cstrProc As String = "Spiel"
Const clngInterval As Long = 1 'Intervall in Sekunden
Public dblNextTime As Double
Public S As Long, Z As Long
Sub starten()
Call Hauptprozedur
End Sub
Sub stoppen()
On Error Resume Next
Application.OnTime dblNextTime, cstrProc, Schedule:=False
MsgBox "huhu"
End Sub
Sub Hauptprozedur()
S = 1
Z = 10
Rows("1:22").ClearContents
Range("a2").Resize(20, 15).Font.Name = "Webdings"
Range("A2").Resize(20, 15).Font.Size = 20
Call BildschirmAufbauen
Call Spiel
End Sub
Sub Spiel()
Cells(Z, S).Value = ""
Z = Z + Int(Rnd() * 3 - 1)
Cells(Z, S + 1).Value = Chr(98)
S = S + 1
If S = 12 Then
S = 1
Cells(Z, 12).Value = ""
End If
If Z > 16 Then Z = 16
If Z 

Anzeige
AW: Makro soll Makro stoppen
12.03.2011 06:36:52
Reinhard
Moin Franz,
das Spiel an sich ist egal. Es stellt dar daß gerade etwas läuft was man nur mit Esc Strg Pause abbrechen könnte, Nun gut ESC kann man einfach deaktivieren., Strg+Pause weiß ich grad ncht.
Was ich möchte, per anderem CB, der sich auf dem Blatt o.ä. befindet das Spiel terninieren zu können.
Un so ein CB funktioniert ja, er ruft auch "Stoppen auf, das wars.
Gut, wahrscheinlich könnte ich im Stoppen-Makro, ein Eit sub einabeuen, das makro Starten oder was auch immer im Code deaktievieren, wenn damit auch der Timer deaktiviert ist, okay, von mir aus.
Oder eine globale Variable umboolan und dann wird der erste Code nicht mehr durchlaufen.
Deshalb wwill ich gerne wissen wie man sowas sauber macht.
Es geht sozusagen,nur darum daß nach KLick auf Stoppen. der andere Code beendet ist.
Gruß
Reinhard
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige