badeend127
Gebruiker
- Lid geworden
- 16 nov 2016
- Berichten
- 18
Hoi iedereen
Ik ben bezig met het schrijven van wat vba code voor een tvscherm op het werk.
Het idee is dat dit scherm wat data weergeeft.
Elke 10 seconden ofzo verwisselt het scherm (naar een volgende sheet) om andere data te tonen.
Alles werkte tot ik voor langere tijd begon te testen.
Na ongeveer 26 uur slaat excel vast. Ik kan geen cel meer selecteren, er wordt geen data meer geplakt of naar een volgend scherm gegaan.
Ik heb logging voorzien en deze blijft wel werken. De code loopt dus nog en er komen geen errors.
Ik ben vervolgens begonnen met steeds meer code te commenten zodat ik kon zien waar het probleem zat.
Uiteindelijk schiet onderstaande code over (1).
Het probleem kan eigenlijk alleen maar bij wbl.Worksheets(sheetarray(j)).Activate zitten.
Om dit op te lossen heb ik geprobeerd de code wat aan te passen zodat de verwijzing sheetarray er niet in zit (2) nog steeds zonder succes.
Mijn ideeën zijn op. Ik kan enkel concluderen dat worksheet.activate niet werkt voor langere tijd.
Iemand die mij verder kan helpen?
Alvast bedankt!
Ik heb deze vraag ook al op een ander forum gesteld, zonder succes:
https://www.excelforum.com/excel-pr...e-due-to-worksheets-activate.html#post5521428
(1)
(2)
Ik ben bezig met het schrijven van wat vba code voor een tvscherm op het werk.
Het idee is dat dit scherm wat data weergeeft.
Elke 10 seconden ofzo verwisselt het scherm (naar een volgende sheet) om andere data te tonen.
Alles werkte tot ik voor langere tijd begon te testen.
Na ongeveer 26 uur slaat excel vast. Ik kan geen cel meer selecteren, er wordt geen data meer geplakt of naar een volgend scherm gegaan.
Ik heb logging voorzien en deze blijft wel werken. De code loopt dus nog en er komen geen errors.
Ik ben vervolgens begonnen met steeds meer code te commenten zodat ik kon zien waar het probleem zat.
Uiteindelijk schiet onderstaande code over (1).
Het probleem kan eigenlijk alleen maar bij wbl.Worksheets(sheetarray(j)).Activate zitten.
Om dit op te lossen heb ik geprobeerd de code wat aan te passen zodat de verwijzing sheetarray er niet in zit (2) nog steeds zonder succes.
Mijn ideeën zijn op. Ik kan enkel concluderen dat worksheet.activate niet werkt voor langere tijd.
Iemand die mij verder kan helpen?
Alvast bedankt!
Ik heb deze vraag ook al op een ander forum gesteld, zonder succes:
https://www.excelforum.com/excel-pr...e-due-to-worksheets-activate.html#post5521428
(1)
Code:
Sub waittime() 'main seq
Dim sheetarray(1 To 5) As String
sheetarray(1) = "A lijn"
sheetarray(2) = "B lijn"
sheetarray(3) = "ECA2"
sheetarray(4) = "ECA3"
sheetarray(5) = "ECA4"
Dim tijd As Date
Dim wisseltijd As Date
Dim wbl As Workbook
Set wbl = ThisWorkbook
'stoptijd = now() + TimeValue("11:01:00")
wisseltijd = now() + TimeValue("00:00:20")
refreshtijd = now()
tijd = now()
writetofile ("start")
Dim j As Integer
j = 1
DoEvents
While 1
While now() < wisseltijd
DoEvents
Wend
If now() > wisseltijd Then
wbl.Worksheets(sheetarray(j)).Activate
j = j + 1
If j = 6 Then
j = 1
End If
wisseltijd = now() + TimeValue("00:00:10")
writetofile ("wissel" & sheetarray(j) & " " & wisseltijd)
End If
If now() > refreshtijd Then
writetofile ("Refresh" & " " & refreshtijd)
' Removed for testing livewaarden (now())
'writetofile ("2")
' removed for testing (not the issue) readalarmalternative
'writetofile ("3")
refreshtijd = now() + TimeValue("00:02:00")
End If
Wend
'Next j
End Sub
(2)
Code:
Sub waittime() 'main seq
Dim sheetarray(1 To 5) As String
sheetarray(1) = "A lijn"
sheetarray(2) = "B lijn"
sheetarray(3) = "ECA2"
sheetarray(4) = "ECA3"
sheetarray(5) = "ECA4"
Dim tijd As Date
Dim wisseltijd As Date
Dim wbl As Workbook
Set wbl = ThisWorkbook
'stoptijd = now() + TimeValue("11:01:00")
wisseltijd = now() + TimeValue("00:00:20")
refreshtijd = now()
tijd = now()
writetofile ("start")
Dim j As Integer
j = 1
DoEvents
While 1
While now() < wisseltijd
DoEvents
Wend
If now() > wisseltijd Then
DoEvents
If j = 1 Then
Sheet10.Activate
End If
If j = 2 Then
Sheet11.Activate
End If
If j = 3 Then
Sheet12.Activate
End If
If j = 4 Then
Sheet9.Activate
End If
If j = 5 Then
Sheet13.Activate
End If
j = j + 1
If j = 6 Then
j = 1
End If
wisseltijd = now() + TimeValue("00:00:10")
writetofile ("wissel" & sheetarray(j) & " " & wisseltijd)
End If
If now() > refreshtijd Then
writetofile ("Refresh" & " " & refreshtijd)
' Removed for testing livewaarden (now())
'writetofile ("2")
' removed for testing (not the issue) readalarmalternative
'writetofile ("3")
refreshtijd = now() + TimeValue("00:02:00")
End If
Wend
'Next j
End Sub