WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   VBA Timer (Powerpoint) (http://www.wcm.at/forum/showthread.php?t=226530)

heli2sky 31.01.2008 12:35

VBA Timer (Powerpoint)
 
hallo leute!

ich hab mit vba eigentlich nix am hut, hab aber jetzt für eine powerpoint präsentation bisschen was damit herumgebastelt. die präsentation ist im wesentlichen ein formular, das direkt geändert werden kann. wichtig ist, dass die aktuelle zeit mitläuft und ständig aktualisiert wird, und das ist das problem!

ich habe es zwar geschafft, jedoch ist die lösung erstens nicht sehr elegant (cpu-belastung 100% :aio: ) und zweitens hängt sich die präsentation alle halben stunden bis stunden auf :(

mein code sieht derzeit so aus:
PHP-Code:

Public Sub zeit()
UTC.Font.Size 35
UTC
.Font.Bold True
pre_stop 
False
Dim Tformat

Tformat 
"hh:mm:ss"
Do While (pre_stop False)
    
utc_now Date + ((Timer / (60 60)) / 24) - (korr_utc 24)
    
UTC.Caption Format(utc_nowTformat)
    
    
'Alle Labels initialisieren
    Dim duetimes As New Collection
    [...]
    
    Dim x As Integer
    Dim y As Integer
    Dim z As Integer
    num = 0
    For Each duetime In duetimes
        x = ETDs(num) / 100
        y = ((ETDs(num) / 100) - x) * 100
        new_ETD = Date + ((x + (y / 60)) / 24)
        diff = new_ETD - utc_now
        If diff > 0 Then
            duetime.Caption = Format(diff, "hh:mm")
        Else
            duetime.Caption = ""
        End If
        If new_ETD > utc_now And new_ETD < utc_now + (20 / (24 * 60)) Then '
anzahl der minuten für warnung
            duetime
.BackColor RGB(2551200)
            
duetime.ForeColor RGB(255255255)
        Else
            
duetime.BackColor RGB(255255255)
            
duetime.ForeColor RGB(000)
        
End If
        
num num 1
        
        
If num 10 Then
            
Exit For
        
End If
    
Next
    
    DoEvents    
' Steuerung an andere Prozesse
            ' 
abgeben.
Loop
UTC
.Caption Format(utc_nowTformat)
End Sub
Public Sub zeitstop()
    
pre_stop True
End Sub 

in der präsentation werden verschiedene flüge eingegeben und von der aktuellen zeit und der vorraussichtlichen startzeit die differenz berechnet...

ich hoffe, ihr versteht mein problem und könnt mir helfen!

Shadow 11.02.2008 15:18

Habe zwar mit Powerpoint noch nix in VBA gemacht, aber die DIM Befehle würde ich grundsätzlich ausserhalb (vor) der DO WHILE Schleife machen, sonst reserviert der womöglich immer neuen Speicher dafür (vor allem für die Collection, die wird am meisten Speicher verbrauchen).

Falls die Zeile "Dim duetimes As New Collection" aus Logikgründen in der Schleife bleiben muss, würde ich vor dem Schleifenende (LOOP) zumindest mit "SET duetimes = Nothing" den reservierten Speicher wieder freigeben.

wbendl 12.02.2008 08:49

Hi!

Ich habe noch nie mit Powerpoint/VBA gearbeitet, aber auch da sollte die API uneingeschränkt funktionieren.

Hier wird ein Timer per API beschrieben:
http://www.vbarchiv.net/vbapi/SetTimer.php

Vielleicht hilft dir das weiter.


mfg

WB


Alle Zeitangaben in WEZ +2. Es ist jetzt 15:52 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag