大逃亡..
嗨,有没有什么方法可以对程序进行编码,以便用户可以从正在运行的vba程序中逃脱出来?
我为我们的办公室创建了一套cad工具,经理们的一些评论是,如果您不小心单击go或错误地填写信息并单击go,则无法逃脱程序。有没有办法添加此功能,同时保持绘图中的所有内容不变,以便绘图恢复到程序运行前的状态?
有什么想法吗?
**** Hidden Message ***** 在例程开始时设置一个撤销标记怎么样?如果需要,用户可以
使用撤消命令。 我想,首先...你的程序做了什么(简而言之)? 有许多不同的,但举例来说,其中一个绘图所有选定的布局,使用保存的绘图设置在每个布局。它有点原始,但还没有时间整理出正确的编码,但基本上它循环通过每个布局,并使用and命令来绘制布局..
当然,有时这可能需要很长时间,用户可能会在列表中单击错误的布局,或者忘记一两个布局,或者只是不小心单击了按钮,所以退出选项会很好,而不仅仅是在程序完成后撤消,这是我在某些其他程序中需要的,但不是这个程序.. *GASP* SendCommand?? 要策划??
为了羞耻!!!
由于您正在循环浏览布局,一遍又一遍地执行相同的代码,因此我想您可以显示一个带有取消按钮的窗体。 你可以有一个全局变量,用于指示用户是否按下了取消按钮 - 也许是一个布尔值? 在每个循环的开头,检查全局变量的 True/False 值。 如果用户按下取消按钮,变量将设置,程序将相应地响应。
有什么意义吗? 两个字给你你提到的功能...
酒吧
lish
你可能会给这样的东西一个机会。 出于演示目的,我将其与采样计时器一起弹出。
Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Public Const VK_ESCAPE = &H1B
Sub Test()
Dim intCnt As Integer
Dim PauseTime, Start, Finish, TotalTime
GetAsyncKeyState VK_ESCAPE
For intCnt = 1 To 10
If (MsgBox("Press Yes to pause for 5 seconds", 4)) = vbYes Then
PauseTime = 5 ' Set duration.
Start = Timer ' Set start time.
Do While Timer < Start + PauseTime
DoEvents ' Yield to other processes.
If GetAsyncKeyState(VK_ESCAPE) Then
Exit For
End If
Loop
Finish = Timer ' Set end time.
TotalTime = Finish - Start ' Calculate total time.
MsgBox "Paused for " & TotalTime & " seconds"
Else
End
End If
Next intCnt
End Sub
真达特! 我使用printalllayouts函数而不是publish,因为我喜欢它胜过publish。
我从来没有想过一个转义序列,它可以方便地用于20种布局。你能中途停止发布命令吗? 耶! 哦也许一个无模式的表单可以做到这一点,我没有弄乱它们。
页:
[1]
2