VBA计时器api内存使用情况

我正在开发一个应用程序,将工作几天,并实现一个计时器(从user32 lib),每运行500毫秒的例程。 问题是每次例程执行时,Excel应用程序所需的内存都增加了8KB。

正如我所说,我会喜欢应用程序运行几天,所以有一点,它的内存消耗太高,应用程序开始太慢了。

我已经在这个和其他地方寻找解决办法,但我没有find解决办法。 我读了关于强制GC,但在vba我不能这样做。 ¿任何人都可以给我一些build议吗?

Pd:谢谢你,对我那可怜的英语感到抱歉。

编辑:

嗨,再次,我使用计时器事件与PLC通信,并采取行动。 也许0.5秒是如此短的时间,代码无法完成例程,事件正在堆栈中。 我想我可以把时间延长到1秒而不会失去performance。

这是我的代码:

API声明

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 

定时器事件例程

 Private Sub TimerEvent() On Error Resume Next Hoja1.cmdFecha.Caption = Format(Now, "dd/mm/yy hh:mm:ss") Hoja6.Range("I40") = 0 'Zona Lectura PLC Call readFromPLC If Hoja6.Range("I40") = 0 Then Hoja4.Range("c11") = 1 Else Hoja4.Range("c11") = 0 End If 'Zona alarmas If Hoja4.Range("C7") <> AlarmaAnterior Then ' Interrupcionpo calculo AlarmaAnterior = Hoja4.Range("D10") If Hoja4.Range("c7") = 0 Then Hoja1.Label1.Visible = False Else 'Hoja4.Range("d8") = Hoja4.Range("d8") + 1 'Call Control Call AlarmasNuevo Hoja1.Label1.Visible = True End If End If 'Zona actuacion If Hoja6.Range("d61") <> Hoja6.Range("d62") Then Hoja6.Range("d62") = Hoja6.Range("d61") Hoja6.Range("d66") = Hoja6.Range("d66") + 1 Call ControlArchivos End If If Hoja6.Range("d63") <> Hoja6.Range("c63") Then Hoja6.Range("d63") = Hoja6.Range("c63") Call ResetContadores End If If Hoja6.Range("I50") = 0 Then ElseIf Hoja6.Range("I49") <> Hoja6.Range("j49") Then Hoja6.Range("J49") = Hoja6.Range("i49") If Hoja6.Range("I49") <> 0 Then Call Medir Else Call StopAcq Sheets("ESCPLC").Range("J58") = 0 Hoja1.cmdAvisos.Visible = False End If End If 'Zona escritura PLC If Hoja6.Range("J57") <> Hoja6.Range("L57") Or Hoja6.Range("J58") <> Hoja6.Range("L58") Or Hoja6.Range("J59") <> Hoja6.Range("L59") Or Hoja6.Range("J60") <> Hoja6.Range("L60") Or Hoja6.Range("J61") <> Hoja6.Range("L61") Then Hoja6.Range("L57") = Hoja6.Range("J57") Hoja6.Range("L58") = Hoja6.Range("J58") Hoja6.Range("L59") = Hoja6.Range("J59") Hoja6.Range("L60") = Hoja6.Range("J60") Hoja6.Range("L61") = Hoja6.Range("J61") Call writeToPLC End If End Sub 

非常感谢你