2x Dell UP2716D | R9 7950X | 128GB RAM | 980 Pro 2TB x2 | RTX2070 Super
.oisyn: Windows is net zo slecht in commandline als Linux in GUI
[ Voor 97% gewijzigd door Bastiaan op 29-12-2010 22:07 ]
[proof of concept]:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| Sub settimer() Dim t As Single Do Do While Int(Timer) = t 'do niks behalve rondjes lopen zolang de tijd niet is veranderd DoEvents Loop t = Int(Timer) If t = 0 Then 'tijd 0 dan is het 2011 ActivePresentation.Slides(1).Shapes(1).TextFrame.TextRange.Text = "Gelukkig Nieuwjaar" Exit Do Else 'of geef de seconden weer die je nog moet gaan... ActivePresentation.Slides(1).Shapes(1).TextFrame.TextRange.Text = TimeSerial(0, 0, 86400 - t) End If Loop End Sub |
Zet op een of ander knopje de aktieinstelling macro aktiveren en shape x op slide y wordt voorzien van een aftellertje dat elke dag om 00:00:00 gelukkig nieuwjaar roept

En nog héél véél meer timers voor PP, of een kant en klare 30 dagen trial.
[ Voor 13% gewijzigd door Lustucru op 29-12-2010 23:15 ]
De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland
die code werkt raar. De titel van de presentatie wordt de timer, en loopt vast als ik een knop activeerLustucru schreef op woensdag 29 december 2010 @ 23:00:
of
[proof of concept]:
Visual Basic:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Sub settimer() Dim t As Single Do Do While Int(Timer) = t 'do niks behalve rondjes lopen zolang de tijd niet is veranderd DoEvents Loop t = Int(Timer) If t = 0 Then 'tijd 0 dan is het 2011 ActivePresentation.Slides(1).Shapes(1).TextFrame.TextRange.Text = "Gelukkig Nieuwjaar" Exit Do Else 'of geef de seconden weer die je nog moet gaan... ActivePresentation.Slides(1).Shapes(1).TextFrame.TextRange.Text = TimeSerial(0, 0, 86400 - t) End If Loop End Sub
Zet op een of ander knopje de aktieinstelling macro aktiveren en shape x op slide y wordt voorzien van een aftellertje dat elke dag om 00:00:00 gelukkig nieuwjaar roept![]()
En nog héél véél meer timers voor PP, of een kant en klare 30 dagen trial.
ik kijk nog naar die andere dingen
ah, al klaar! bij activepresentation.slides(1) moet je niet 1 maar 48 invoegen voor de 48e dia
edit: Ik krijg een fout dat iets buiten bereik valt:
Bij foutopsporing krijg ik dan din de regel onder else een fout. Wat is er aan de hand?Fout -2147024809 (80070057) tijdens uitvoering:
De opgegeven waarde valt buiten het bereik.
[ Voor 11% gewijzigd door F.West98 op 30-12-2010 16:27 ]
2x Dell UP2716D | R9 7950X | 128GB RAM | 980 Pro 2TB x2 | RTX2070 Super
.oisyn: Windows is net zo slecht in commandline als Linux in GUI
Als je internet hebt bij die presentatie...
http://countdown.onlineclock.net/countdowns/newyear/
Maar is er een mogelijkheid om een knop te maken die zegt: Stop tellen, ofdat als je de diapresentatie sluit dat het stopt, want dan loopt het door en loopt het vast...
2x Dell UP2716D | R9 7950X | 128GB RAM | 980 Pro 2TB x2 | RTX2070 Super
.oisyn: Windows is net zo slecht in commandline als Linux in GUI
Zet in het lusje een check op een globale boolean en laat een ander knopje die van waarde veranderen. Kun je ook meteen voorkomen dat de code twee keer wordt aangeroepen.
1
2
3
4
5
6
7
8
9
10
11
12
| dim IsRunning as boolean sub countdown() if not isRunning then isRunning =true do while isRunning Loop end if end sub sub stop() isrunning =false end sub |
De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland
is dit dan extra erbij, of vervangend?Lustucru schreef op donderdag 30 december 2010 @ 18:16:
ej, 't is een proof of concept, geen produktiecode.
Zet in het lusje een check op een globale boolean en laat een ander knopje die van waarde veranderen. Kun je ook meteen voorkomen dat de code twee keer wordt aangeroepen.
Visual Basic:
1 2 3 4 5 6 7 8 9 10 11 12 dim IsRunning as boolean sub countdown() if not isRunning then isRunning =true do while isRunning Loop end if end sub sub stop() isrunning =false end sub
2x Dell UP2716D | R9 7950X | 128GB RAM | 980 Pro 2TB x2 | RTX2070 Super
.oisyn: Windows is net zo slecht in commandline als Linux in GUI
Sowieso zorgt dat doevent loopje voor akelige instabiliteit als de code niet beeindigd wordt.
Beter kijk je naar de windows timer api uit de eerste link die ik je gaf. mbv de OnSlideShowPageChange(ByVal SSW As SlideShowWindow) auto-macro kun je dan bovendien de timer automatisch starten en stoppen bij het inbeeld krijgen van de slide.
De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland
de code werkte, nu zegt ie steeds: overloop bij de regel met de tijd die er nog komtLustucru schreef op donderdag 30 december 2010 @ 23:59:
Zelf erbij knutselen.![]()
Sowieso zorgt dat doevent loopje voor akelige instabiliteit als de code niet beeindigd wordt.
Beter kijk je naar de windows timer api uit de eerste link die ik je gaf. mbv de OnSlideShowPageChange(ByVal SSW As SlideShowWindow) auto-macro kun je dan bovendien de timer automatisch starten en stoppen bij het inbeeld krijgen van de slide.
2x Dell UP2716D | R9 7950X | 128GB RAM | 980 Pro 2TB x2 | RTX2070 Super
.oisyn: Windows is net zo slecht in commandline als Linux in GUI
'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)
Ik had de code van Lustucru, maar die liep bij de laatste seconde vastF_J_K schreef op maandag 03 januari 2011 @ 11:40:
Aangenomen dat je er uit bent gekomen met de links die hier zijn gegeven: wat is je uiteindelijke code geworden? Kunnen anderen misschien van leren
En dit jaar zit ik met hetzelfde. Ik heb geen enkel verstand van Basic oid, dus dat is erg moeilijk
De tweede code uit de laatste link van Lustucru, zijn laatste post, die werkt wel, maar ik krijg geen timer... (in php zou ik zoiets misschien wel kunnen maken, maar VB... nee)
edit:
aja... die krijgt wel een timer, mar gewoon 1, 2, 3, enz
[ Voor 5% gewijzigd door F.West98 op 31-12-2011 14:55 ]
2x Dell UP2716D | R9 7950X | 128GB RAM | 980 Pro 2TB x2 | RTX2070 Super
.oisyn: Windows is net zo slecht in commandline als Linux in GUI
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
| Declare Function SetTimer Lib "user32" _ (ByVal hwnd As Long, _ ByVal nIDEvent As Long, _ ByVal uElapse As Long, _ ByVal lpTimerFunc As Long) As Long Declare Function KillTimer Lib "user32" _ (ByVal hwnd As Long, _ ByVal nIDEvent As Long) As Long Public TimerID As Long Public bTimerState As Boolean Sub TimerOnOff() If bTimerState = False Then TimerID = SetTimer(0, 0, 1000, AddressOf TimerProc) If TimerID = 0 Then MsgBox "Unable to create the timer", vbCritical + vbOKOnly, "Error" Exit Sub End If bTimerState = True Else TimerID = KillTimer(0, TimerID) If TimerID = 0 Then MsgBox "Unable to stop the timer", vbCritical + vbOKOnly, "Error" End If bTimerState = False End If End Sub Sub TimerProc(ByVal hwnd As Long, _ ByVal uMsg As Long, _ ByVal idEvent As Long, _ ByVal dwTime As Long) Dim t As Long t = Timer If t <= 20 Then 'tijd 0 dan is het 2012, moet binnen 20s wel lukken... ActivePresentation.Slides(1).Shapes(1).TextFrame.TextRange.Text = _ "Gelukkig Nieuwjaar" If bTimerState Then TimerOnOff Else 'of geef de seconden weer die je nog moet gaan... ActivePresentation.Slides(1).Shapes(1).TextFrame.TextRange.Text = _ Format(TimeSerial(0, 0, 86400 - t), "hh:mm:ss") End If End Sub |
Debug->Compile VBAProject wil ook wel eens helpen.
Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten
Die werkt!pedorus schreef op zaterdag 31 december 2011 @ 18:29:
Lijkt me een kwestie van beide stukjes code door elkaar gooien. Iets aangepast:
Visual Basic:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 Declare Function SetTimer Lib "user32" _ (ByVal hwnd As Long, _ ByVal nIDEvent As Long, _ ByVal uElapse As Long, _ ByVal lpTimerFunc As Long) As Long Declare Function KillTimer Lib "user32" _ (ByVal hwnd As Long, _ ByVal nIDEvent As Long) As Long Public TimerID As Long Public bTimerState As Boolean Sub TimerOnOff() If bTimerState = False Then TimerID = SetTimer(0, 0, 1000, AddressOf TimerProc) If TimerID = 0 Then MsgBox "Unable to create the timer", vbCritical + vbOKOnly, "Error" Exit Sub End If bTimerState = True Else TimerID = KillTimer(0, TimerID) If TimerID = 0 Then MsgBox "Unable to stop the timer", vbCritical + vbOKOnly, "Error" End If bTimerState = False End If End Sub Sub TimerProc(ByVal hwnd As Long, _ ByVal uMsg As Long, _ ByVal idEvent As Long, _ ByVal dwTime As Long) Dim t As Long t = Timer If t <= 20 Then 'tijd 0 dan is het 2012, moet binnen 20s wel lukken... ActivePresentation.Slides(1).Shapes(1).TextFrame.TextRange.Text = _ "Gelukkig Nieuwjaar" If bTimerState Then TimerOnOff Else 'of geef de seconden weer die je nog moet gaan... ActivePresentation.Slides(1).Shapes(1).TextFrame.TextRange.Text = _ Format(TimeSerial(0, 0, 86400 - t), "hh:mm:ss") End If End Sub
Debug->Compile VBAProject wil ook wel eens helpen.Code dus geciteerd van hier.
Heeeeel erg bedankt, die gebruik ik de komende jaren ook.
Je moet gewoon een vierkant/tekstvak op dia zetten, slides nummer veranderen naar jouw dia en als je op dat vierkant/tekstvak klikt, dan macro tmronoff kiezen
2x Dell UP2716D | R9 7950X | 128GB RAM | 980 Pro 2TB x2 | RTX2070 Super
.oisyn: Windows is net zo slecht in commandline als Linux in GUI
Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.
Ben ik weer.
Dit keer iets eerder, maar Powerpoint 2010 (vorig jaar gebruikt) en 2013 crashen op de vorig jaar gebruikte code... Iets met overflow. Voordat ik kan klikken op debug: crash.
De code van vorig jaar is dus die van pedorus.
Ik heb dit jaar al dingen geprobeerd met Excel-objects erin, maar in Excel alleen al gaat het CPU gebruik omhoog naar 100% voor die core van Excel, niet echt goede code dus.
Iemand een idee?
edit:
runtime error 6, overflow
[ Voor 3% gewijzigd door F.West98 op 30-12-2012 01:21 ]
2x Dell UP2716D | R9 7950X | 128GB RAM | 980 Pro 2TB x2 | RTX2070 Super
.oisyn: Windows is net zo slecht in commandline als Linux in GUI
[ Voor 9% gewijzigd door Lustucru op 30-12-2012 17:50 ]
De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland
Ah gevondenLustucru schreef op zondag 30 december 2012 @ 17:49:
zet een onderbrekingspunt en stap met F8 door je code; probeer zo te achterhalen waar de overflow optreedt.
Ik denk dat het zo wel werkt:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
| Declare Function SetTimer Lib "user32" _ (ByVal hwnd As Long, _ ByVal nIDEvent As Long, _ ByVal uElapse As Long, _ ByVal lpTimerFunc As Long) As Long Declare Function KillTimer Lib "user32" _ (ByVal hwnd As Long, _ ByVal nIDEvent As Long) As Long Public TimerID As Long Public bTimerState As Boolean Sub TimerOnOff() If bTimerState = False Then TimerID = SetTimer(0, 0, 1000, AddressOf TimerProc) If TimerID = 0 Then MsgBox "Unable to create the timer", vbCritical + vbOKOnly, "Error" Exit Sub End If bTimerState = True Else TimerID = KillTimer(0, TimerID) If TimerID = 0 Then MsgBox "Unable to stop the timer", vbCritical + vbOKOnly, "Error" End If bTimerState = False End If End Sub Sub TimerProc(ByVal hwnd As Long, _ ByVal uMsg As Long, _ ByVal idEvent As Long, _ ByVal dwTime As Long) Dim t As Long Dim sec As Long Dim min As Long Dim hr As Long Dim sec2 As String t = Timer sec = Int((CLng(3600) * 24) - t) min = Int(CLng(1440) - (t / 60)) hr = Int(24 - (t / CLng(3600))) min = min - (60 * hr) sec = sec - (CLng(3600) * hr) - (60 * min) If sec < 10 Then sec2 = "0" & sec Else sec2 = sec End If If t <= 20 Then 'tijd 0 dan is het 2012, moet binnen 20s wel lukken... ActivePresentation.Slides(20).Shapes(20).TextFrame.TextRange.Text = _ "Gelukkig Nieuwjaar" If bTimerState Then TimerOnOff Else 'of geef de seconden weer die je nog moet gaan... ActivePresentation.Slides(20).Shapes(20).TextFrame.TextRange.Text = hr & ":" & min & ":" & sec2 End If End Sub |
Maar nu gaat de animatie op die ene pagina steeds resetten als hij de tijd verandert
[ Voor 87% gewijzigd door F.West98 op 31-12-2012 01:22 ]
2x Dell UP2716D | R9 7950X | 128GB RAM | 980 Pro 2TB x2 | RTX2070 Super
.oisyn: Windows is net zo slecht in commandline als Linux in GUI