Excel VBA弹出以停止执行代码

hs1rzwqc  于 2023-05-23  发布在  其他
关注(0)|答案(1)|浏览(132)

我有一个文件,开始更新数据等的权利,当它被打开,然后它被保存和关闭。该文件每天都会打开一个任务计划程序。
我当前的键盘没有break键,所以我无法手动停止代码的执行。我想做的是创建一个弹出窗口,询问用户是否应该停止,如果用户然后停止它,他们可以在文件中工作,但如果文件自动打开,用户不存在,我需要文件关闭弹出窗口后,让我们说30秒,然后继续代码。
这是可能的,我将如何创建一个弹出窗口和代码一样
我已经创建了一个弹出窗口,但不能让它关闭,并继续没有用户输入

vyswwuz2

vyswwuz21#

我会建议你另一种解决方案,如果用户在任何时候都存在,他按下Shift键被问到他是否要停止该过程或不,并根据答案的过程将被停止或继续.这可以在流程的任何阶段完成(我假设将在循环内实现)

'THIS CODE IN A MODULE 
'--------------------------------------------------
#If VB7 And Win64 Then
Private Declare PtrSafe Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
#Else
Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
#End If

Private Const KEY_MASK As Integer = &HFF80

Public Function IsShiftKeyDown() As Boolean
   IsShiftKeyDown = CBool(GetKeyState(vbKeyShift) And KEY_MASK )
End Function

'THIS CODE EMULATES THE DATA UPDATER
'-------------------------------------------------
Sub data_updater()
   Do
      DoEvents   'Necessary
      If IsShiftKeyDown() Then
         If MsgBox("SELECT OK TO STOP UPDATES", vbDefaultButton2 + vbQuestion + vbOKCancel, "BREAK FROM USER") = vbOK Then
            GoTo STOP_BY_USER
         End If
      End If

      'execute your code here
      
   Loop
   Exit Sub
STOP_BY_USER:
   'if necessary, wtite here code to complete the user break
End Sub

'usage example
'---------------
Sub STARTER()
   Call data_updater
End Sub

相关问题