Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1040to1044
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

Alternative zu OnTime

Alternative zu OnTime
23.01.2009 17:06:47
Kai
Hallo Leute,
gibt es eine Alternative zu Application OnTime, um ein Makro in bestimmten Abständen zu wiederholen, die Funktion erzeugt nämlich in meinem Makro beim Arbeitsmappenwechsel Fehler.
MFG Kai

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

Betreff
Datum
Anwender
Anzeige
AW: Alternative zu OnTime
23.01.2009 17:20:00
Tino
Hallo,
es gibt noch eine Api Funktion
Option Explicit


Private Declare Function SetTimer Lib "user32" (ByVal hWnd As _
Long, ByVal nIDEvent As Long, ByVal uElapse As Long, _
ByVal lpTimerFunc As Long) As Long
 
Private Declare Function KillTimer Lib "user32" (ByVal hWnd As _
Long, ByVal nIDEvent As Long) As Long
 
 Public hTimer As Long

' Timer einschalten + Makro zuweisen 
 Sub StartTimer()
  hTimer = SetTimer(0, 0, 1000, AddressOf Makro1)
 End Sub
 
 'Timer Ausschalten 
 Sub TimerAusschalten()
  KillTimer 0, hTimer
  MsgBox "Zeit abgelaufen"
 End Sub

Sub Makro1()
Dim Test As Double
MeineSub
'so 
Test = [=SUBTOTAL(9,A5:A5000)]
'oder so 
Test = Application.WorksheetFunction.Subtotal(9, Range("A5:A5000"))

End Sub


Gruß Tino

Anzeige
AW: Alternative zu OnTime
23.01.2009 17:32:11
Beate
Hallo Kai,
OnTime bezieht sich ja auf die Anwendung Excel und nicht auf eine bestimmte Exceldatei.
Eigentlich brauchst du also 4 Makros (alle im Codefenster diese Arbeitsmappe):
Private Sub Workbook_Open()
    'OnTime anschalten
End Sub

Private Sub Workbook_Activate()
    'OnTime anschalten
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    'OnTime ausschalten
End Sub

Private Sub Workbook_Deactivate()
    'OnTime ausschalten
End Sub


Guckst Du: Applicaton.OnTime - Zeitgesteuerte Makros
Gruß,
Beate
Anzeige
AW: Alternative zu OnTime
23.01.2009 19:15:00
Nepumuk
Liebste Beate,
alle vier Ereignisse sind nicht notwendig. Kopier mal diese vier Routinen in eine Mappe, speichern schließen und wieder öffnen.
' **********************************************************************
' Modul: DieseArbeitsmappe Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Workbook_Activate()
    MsgBox "Activate"
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    MsgBox "BeforeClose"
End Sub

Private Sub Workbook_Deactivate()
    MsgBox "Deactivate"
End Sub

Private Sub Workbook_Open()
    MsgBox "Open"
End Sub

Gruß
Nepumuk
Anzeige
Stimmt
23.01.2009 19:22:00
Beate
Lieber Max,
stimmt, zwei tuns auch, nämlich diese:
Private Sub Workbook_Activate()
    MsgBox "Activate"
End Sub

Private Sub Workbook_Deactivate()
    MsgBox "Deactivate"
End Sub


Danke für die Info.
Herzliche Grüße,
Beate
Anzeige
AW: Alternative zu OnTime
23.01.2009 17:43:00
Kai
Danke für die schnellen und kompetenten Antworten, ich werde testen.
Gruß Kai
Das wird wohl nicht helfen,
23.01.2009 17:46:38
RS
denn wenn Dein Code zu Fehlern führt, wenn eine andere Arbeitsmappe (und oder Tabelle) geöffnet wird, hilft auch eine Alternative nicht, Kai.
Überarbeite den (fehlerhaften) Code, so dass die Adressierungen der Objekte sich immer eindeutig sind.
Wenn du z.B. mit ActiveSheet oder unvollständige Range("xxx") arbeitest wirst du genau zu solchen Fehlern gelangen, egal ob in OnTime oder einer anderen (Timing) Methode.
Grüsse RS
AW: Das wird wohl nicht helfen,
23.01.2009 19:46:00
Kai
Hallo RS,
der Code ist nicht fehlerhaft, es ist nur so das sich OnTime nicht nur auf die geöffnete Arbeitsmappe bezieht sondern auf Excel und der Code in der nächsten Arbeitsmappe weiterläuft und dadurch Probleme hervorruft.
Gruß Kai
Anzeige
AW: Das wird wohl nicht helfen,
23.01.2009 19:52:00
Nepumuk
Hallo Kai,
dann ist der Code einfach schlecht geschrieben. Denn bei korrekter Referenzierung kann das nicht passieren. Wenn du natürlich mit Selection, ActiveWorkbook, ActiveSheet, ActiveCell ..... arbeitest, dann kann das nur in die Hose gehen. Das hat aber wie andere schon geschrieben nichts mit der OnTime-Funktion zu tun und das wird durch eine andere Funktion auch nicht besser.
Gruß
Nepumuk
AW: Hallo Nepumuk
23.01.2009 20:44:30
Kai
Hallo Nepumuk,
der Code ist von dir. Ich lade mal die Mappe hoch. Hab ich im Archiv gefunden.
https://www.herber.de/bbs/user/58738.xls
Gruß Kai
Anzeige
bin nicht Nepumuk, aber...
23.01.2009 21:26:00
Tino
Hallo,
wenn Du die Rechte hast den Bildschirmschone zu deaktivieren bzw. zu aktivieren,
kannst Du dass auch so machen.
Beispiel:
Option Explicit

Private Declare Function SystemParametersInfo Lib "user32" _
      Alias "SystemParametersInfoA" (ByVal uAction As Long, _
      ByVal uParam As Long, ByRef lpvParam As Any, _
      ByVal fuWinIni As Long) As Long

Private Const SPI_GETSCREENSAVEACTIVE = 16
Private Const SPI_SETSCREENSAVEACTIVE = 17

Private Function GetScreenSaverActive() As Boolean
 Dim blnAktiv As Boolean
 SystemParametersInfo SPI_GETSCREENSAVEACTIVE, 0, blnAktiv, 0
 GetScreenSaverActive = blnAktiv
End Function

Private Sub SetScreenSaverActive(ByVal Active As Boolean)
SystemParametersInfo SPI_SETSCREENSAVEACTIVE, Active, ByVal 0, 0
End Sub



Sub Code_Ohne_Bildschirmschoner()
Dim Abfrage As Boolean

'Abfrage ob Schoner aktiv 
Abfrage = GetScreenSaverActive

'Bildschirmschoner aus 
SetScreenSaverActive False


'Bildschirmschoner alter Zustand 
SetScreenSaverActive Abfrage

End Sub


Gruß Tino

Anzeige
AW: bin nicht Nepumuk, aber...
23.01.2009 22:15:19
Kai
Hallo Tino,
die Rechte hab ich aber nicht ist ein Firmenrechner.
Kai
Application.OnTime
23.01.2009 22:36:27
Dieter
Hi,
in der Hilfe zur OnTime-Methode ist beschrieben, wie du mit schedule:=FALSE die
OnTime-Prozedur stoppen kannst.
mfg Dieter
AW: bin nicht Nepumuk, aber...
24.01.2009 10:07:00
Tino
Hallo,
bei mir in der Firma bin ich nur an zwei Rechner der Admin,
aber an denen ich keiner bin kann ich dennoch den Bildschirmschoner einstellen.
Hast Du es mal getestet? Vielleicht geht es ja doch.
Gruß Tino
AW: bin nicht Nepumuk, aber...
24.01.2009 11:12:54
Kai
Hallo Leute,
ich bin mir ganz sicher das ich keine Rechte für den Bildschirmschoner habe. Zum Tipp mit der OnTime Hilfe ist es so das ich das schon getestet habe aber ohne Erfolg. Das Makro läuft auf Grund des Time Codes weiter und die geschlossene Arbeitsmappe aktiviert sich ungewollt wieder.
Gruß Kai
Anzeige
AW: Danke Tino
25.01.2009 12:26:29
Kai
Hallo Tino,
danke für die Hilfe es funktioniert.
Gruß Kai

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige