Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2909|回复: 10

[已解决]请教save无效的原因

[复制链接]
发表于 2015-6-28 12:40 | 显示全部楼层 |阅读模式
在Workbook_BeforeClose过程中,执行保存save,但实际没有保存。原因是什么?请大侠指教。
最佳答案
2015-6-29 10:16
是的,还没触发BeforeClose事件,但它得运行完thisworkbook.Close,它是不触发BeforeClose事件的,所以不保存了。
和直接关闭文件情况是不一样的。
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2015-6-28 13:19 | 显示全部楼层
你没将全部代码写出来,如何分析??
回复

使用道具 举报

 楼主| 发表于 2015-6-28 16:22 | 显示全部楼层
本帖最后由 arcn 于 2015-6-28 16:24 编辑
zjdh 发表于 2015-6-28 13:19
你没将全部代码写出来,如何分析??


Private Sub Workbook_BeforeClose(Cancel As Boolean)
        On Error Resume Next
   If ThisWorkbook.Saved =FALSE Then
   IF VBYES = MsgBox("当前文档" & ThisWorkbook.Name & "已经修改。在关闭之前,您是否要保存数据?", vbQuestion + vbYesNoCancel, "保存提示'')then
        thisworkbook.save
        ThisWorkbook.Saved = True
End If
End Sub

但实际上,并没有保存,已试过无数遍。
请教高手原因。我的Excel2003版。
回复

使用道具 举报

发表于 2015-6-28 16:28 | 显示全部楼层
Private Sub Workbook_BeforeClose(Cancel As Boolean)
        On Error Resume Next
   If ThisWorkbook.Saved =FALSE Then
   IF VBYES = MsgBox("当前文档" & ThisWorkbook.Name & "已经修改。在关闭之前,您是否要保存数据?", vbQuestion + vbYesNoCancel, "保存提示'')=vbYes then
        thisworkbook.save
        ThisWorkbook.Saved = True
End If
End Sub
回复

使用道具 举报

发表于 2015-6-28 16:54 | 显示全部楼层
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    On Error Resume Next
    If ThisWorkbook.Saved = False Then
        If MsgBox("当前文档" & ThisWorkbook.Name & "已经修改。在关闭之前,您是否要保存数据?", vbQuestion + vbYesNoCancel, "保存提示") = 6 Then
            ThisWorkbook.Save
            ThisWorkbook.Saved = True
        End If
    End If
End Sub
回复

使用道具 举报

 楼主| 发表于 2015-6-28 17:27 | 显示全部楼层
zjdh 发表于 2015-6-28 16:54
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    On Error Resume Next
    If ThisWorkbook.S ...

即使去掉了后面的=vbyes ,仍然是实际上没有保存。不在这个Workbook_BeforeClose程序中设置,比如,在执行Workbook_BeforeClose之前的程序,就会执行save。我看了帮助,本来在Workbook_BeforeClose这里是检查是否需要保存的,但实际上save,或者,SaveAs也是执行后实际没有保存。
回复

使用道具 举报

发表于 2015-6-28 18:30 | 显示全部楼层
不懂你的意思,你将我的语句放入工作簿试试就知道啦!
回复

使用道具 举报

 楼主| 发表于 2015-6-29 07:53 | 显示全部楼层
zjdh 发表于 2015-6-28 18:30
不懂你的意思,你将我的语句放入工作簿试试就知道啦!

已经试过,操作也没有提示出错。但是,工作簿重新打开后,发现没有保存。试过很多次都这样。不知什么原因。
回复

使用道具 举报

发表于 2015-6-29 09:12 | 显示全部楼层
你把 On Error Resume Next  注销掉再试试。
回复

使用道具 举报

 楼主| 发表于 2015-6-29 09:29 | 显示全部楼层
本帖最后由 arcn 于 2015-6-29 10:22 编辑
zjdh 发表于 2015-6-29 09:12
你把 On Error Resume Next  注销掉再试试。


Private Sub Workbook_BeforeClose(Cancel As Boolean)
        ThisWorkbook.Save
End Sub
此时系统跳出是否保存对话框,应该是该语句还没用起作用。否则不应该跳出对话框。对吗.
补充:
我是用自定义窗体的按钮来执行关闭命令的:
Private Sub CommandButton1_Click()
       thisworkbook.Close
end sub

Book1.rar

9.68 KB, 下载次数: 0

这是例子

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-19 14:46 , Processed in 0.464033 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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