金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 182|回复: 10

Application_Close事件不是每次都会执行求解

[复制链接]

25

主题

63

帖子

63

积分

等级: 免费版

注册:
2024-7-2
曾用名:
奥黛丽·赫本
发表于 2024-10-17 13:56 | 显示全部楼层 |阅读模式
我在Function模块中写了这个事件,但是关闭金字塔的时候,不是每次都会执行,随机的,偶尔会弹出系统退出的窗口,不知道什么原因(VBA是处于运行中的)
[Visual Basic] 复制代码
Sub Application_Close()
       msgbox "系统退出"
End Sub



回复

使用道具 举报

34

主题

9006

帖子

5万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2024-10-17 14:24 | 显示全部楼层
除非是你的vba环境没有开启。或者关闭时是停止状态,否者不会不执行的。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

25

主题

63

帖子

63

积分

等级: 免费版

注册:
2024-7-2
曾用名:
奥黛丽·赫本
 楼主| 发表于 2024-10-17 14:45 | 显示全部楼层
技术006 发表于 2024-10-17 14:24
除非是你的vba环境没有开启。或者关闭时是停止状态,否者不会不执行的。

太神奇了,是开启状态,其他的代码段都正常执行的
回复

使用道具 举报

25

主题

63

帖子

63

积分

等级: 免费版

注册:
2024-7-2
曾用名:
奥黛丽·赫本
 楼主| 发表于 2024-10-17 14:51 | 显示全部楼层
技术006 发表于 2024-10-17 14:24
除非是你的vba环境没有开启。或者关闭时是停止状态,否者不会不执行的。

我把代码放到Macro里面看看,应该不会啊,金字塔下面不是代码放在哪个模块都不影响的啊
回复

使用道具 举报

34

主题

9006

帖子

5万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2024-10-17 15:02 | 显示全部楼层
人间四月天 发表于 2024-10-17 14:51
我把代码放到Macro里面看看,应该不会啊,金字塔下面不是代码放在哪个模块都不影响的啊

正常关闭软件一定会触发关闭事件动作的,这个你可以在跟踪下规律
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

25

主题

63

帖子

63

积分

等级: 免费版

注册:
2024-7-2
曾用名:
奥黛丽·赫本
 楼主| 发表于 2024-10-18 16:55 | 显示全部楼层
技术006 发表于 2024-10-17 15:02
正常关闭软件一定会触发关闭事件动作的,这个你可以在跟踪下规律

好像在多屏电脑上就会时不时出现
回复

使用道具 举报

34

主题

9006

帖子

5万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2024-10-18 20:00 | 显示全部楼层
和屏幕应该无关,我测试环境下就是多屏的。并且关闭时一个事件动作。和显示输出设备也无关
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

25

主题

63

帖子

63

积分

等级: 免费版

注册:
2024-7-2
曾用名:
奥黛丽·赫本
 楼主| 发表于 2024-10-18 22:43 | 显示全部楼层
技术006 发表于 2024-10-18 20:00
和屏幕应该无关,我测试环境下就是多屏的。并且关闭时一个事件动作。和显示输出设备也无关

我发现一个问题,会不会是Application_Close事件发生后,没有等到msgbox "系统退出"执行完毕他就退出了,能不能给Application_Close事件执行过程增加一个delay呢,我试了代码错误可能没写对
回复

使用道具 举报

25

主题

63

帖子

63

积分

等级: 免费版

注册:
2024-7-2
曾用名:
奥黛丽·赫本
 楼主| 发表于 2024-10-18 22:46 | 显示全部楼层
技术006 发表于 2024-10-18 20:00
和屏幕应该无关,我测试环境下就是多屏的。并且关闭时一个事件动作。和显示输出设备也无关

我看Application.Wait也不行,没有这个方法
回复

使用道具 举报

34

主题

9006

帖子

5万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2024-10-19 13:40 | 显示全部楼层
本地测试没有问题。怀疑你是的代码中存在异常情况造成了一场退出。

Sub APPLICATION_Close()
        Dim startTime, currentTime, timeDifference
        Dim fso, file
        Set fso = CreateObject("Scripting.FileSystemObject")
        Set file = fso.OpenTextFile("D:\time_log.txt", 2, True)
       
        ' 获取当前时间作为起始时间
        startTime = Now
       
        Do While True
            ' 获取当前时间
            currentTime = Now
           
            ' 写入当前时间到文件
            file.WriteLine "当前时间: " & currentTime
           
            ' 计算时间差
            timeDifference = DateDiff("s", startTime, currentTime)
           
            ' 如果已经过了60秒,则退出循环
            If timeDifference >= 60 Then Exit Do
           
        Loop
       
        ' 关闭文件
        file.Close
        msgbox "测试"
End Sub
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 微信登录

本版积分规则

手机版|小黑屋|上海金之塔信息技术有限公司 ( 沪ICP备13035422号 )

GMT+8, 2024-11-16 04:53 , Processed in 0.250007 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表