Я использую:
- Win 7x64;
- Доступ - 2016;
Я пытаюсь решить мою проблему с помощью следующего кода.
Form1
Option Compare Database
Option Explicit
Public statusBool As Boolean
Public numProc As Integer
' `Button pressed`.
Private Sub btnStart_Click()
numProc = 0
statusBool = True
Call Process(statusBool, numProc)
End Sub
' Process
Public Sub Process(statusBool As Boolean, numProc As Integer)
If statusBool = True Then
Me.txtProcessFrm = "ProcessNum - " & numProc + 1
Call SleepFor(1000) '1 seconds delay
Call Process(statusBool, numProc)
End If
End Sub
'
Private Sub btnStart_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
statusBool = False
numProc = 0
Call Process(statusBool, numProc)
End Sub
Public Sub SleepFor(ByVal MilliSeconds As Long)
Sleep MilliSeconds
End Sub
Module1
Option Compare Database
Option Explicit
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Вопрос
Будет ли мое решение правильным для этой задачи или есть более простые способы решения этой проблемы?
Update_1
Код не запускается.
Я получаю ошибку Sub or Function not defined
.
Update_2
Модуль Module1
.
Заменено Private
на Public
.
Было
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Стало
Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Проблема.
При нажатии на кнопку btnStart_Click
файл зависает
Update_3
Модифицированный процесс (statusBool As Boolean, numProc As Integer)
Он стал.
' Process
Public Sub Process(statusBool As Boolean, numProc As Integer)
If statusBool = True Then
Do
Sleep 1000
DoEvents
Loop Until Me.txtProcessFrm = "ProcessNum - " & numProc + 1
Call Process(statusBool, numProc)
End If
End Sub
Проблема.
Кажется, пауза работает, но сама логика не работает.
Другими словами, текстовое поле не заполнено текстом.
Если вы отпустите кнопку, цикл продолжит работать.