Excel精英培训网

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

[习题] 2015年VBA初级1班D组第2讲作业提交帖

[复制链接]
发表于 2015-6-11 19:25 | 显示全部楼层 |阅读模式
本帖最后由 云子 于 2015-6-17 23:38 编辑

2015年VBA初级1班D组第2讲作业提交帖

第2讲课程视频 http://www.excelpx.com/thread-365855-1-1.html
第2讲课件 http://www.excelpx.com/thread-365774-1-1.html
第2讲作业 http://www.excelpx.com/thread-365779-1-1.html

作业要求:
1、提交作业请注明论坛ID及学号。如:D14-郭郭嗯;
2、作业请以代码方式提交,标清题号并所有题贴到一个代码标签中,无需提交附件。不会使用标签可移步妙妙班长帖子:http://www.excelpx.com/thread-322284-1-1.html
3、代码题要求强制声明变量,代码缩进
4、跟帖不要重复占楼,有问题直接在原帖编辑;
5、非本组学员请勿跟帖,否者往死里扣分;
6、作业截止时间:2015年6月16日18:00时
发表于 2015-6-11 20:17 | 显示全部楼层
本帖最后由 天蓝地黑 于 2015-6-11 20:26 编辑
  1. 事件程序
  2. Private Sub Workbook_BeforeClose(Cancel As Boolean)
  3. MsgBox "此功能已经被禁止,请使用""关闭""按钮关闭工作簿!", , "提示"
  4. Cancel = True
  5. End Sub
  6. 关闭按钮程序
  7. Sub 关闭()
  8. ThisWorkbook.Save
  9. Application.EnableEvents = False
  10. ThisWorkbook.Close 1
  11. Application.EnableEvents = True
  12. End Sub
复制代码
D09:天蓝地黑
对了,用这个交作业,为什么代码缩进没有了呢?我是有缩进的???

点评

ThisWorkbook.Save这句可以省掉,其他的都很棒!不过这种方法有一定的局限性,运行过一次按钮过程后,再次打开就能够正常关闭了  发表于 2015-6-17 23:02

评分

参与人数 1 +10 金币 +9 收起 理由
云子 + 10 + 9 赞一个!

查看全部评分

回复

使用道具 举报

发表于 2015-6-12 08:01 | 显示全部楼层
本帖最后由 一村之长 于 2015-6-12 09:10 编辑

D15:一村之长
代码存放在ThisWorkbook
学委美女大人辛苦了,一定要给高分哦么么哒{:011:},虽然不是第一个交作业
  1. Dim bc As Boolean '定义一个变量“bc”,默认值False
  2. Private Sub Workbook_BeforeClose(Cancel As Boolean)
  3.     If bc = False Then  '假设变量bc=False
  4.         Cancel = True   '参数Cancel赋值True,禁止关闭工作簿
  5.         MsgBox "此功能已经被禁止,请使用""关闭""按钮关闭工作簿!", vbExclamation, "提示"
  6.     End If
  7. End Sub
  8. Public Sub closeworkbook()
  9.     bc = True '变量bc赋值True
  10.     ThisWorkbook.Close True '强制保存当前工作簿
  11.     Me.Close  '关闭当前工作簿
  12. End Sub
复制代码

点评

ThisWorkbook.Close True 已经保存并关闭工作簿了  发表于 2015-6-12 22:52
非常棒!可是为什么最后又多写了一句me.close?  发表于 2015-6-12 22:51

评分

参与人数 1 +10 金币 +10 收起 理由
云子 + 10 + 10 赞一个!

查看全部评分

回复

使用道具 举报

发表于 2015-6-12 13:37 | 显示全部楼层
本帖最后由 武林长风 于 2015-6-14 10:24 编辑

D14:武林长风  交作业[code]Option Explicit
Option Explicit
Dim wb As Boolean
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    If wb = False Then
        Cancel = True
        MsgBox "此功能已经被禁止,请使用""关闭""按钮关闭工作簿!", vbExclamation, "提示"
    End If
End Sub
Public Sub CloseWorkbook()
    ThisWorkbook.Save
    wb = True
    Me.Close
    Application.Quit
End Sub

点评

你的思路完全正确,非常棒!不过,CloseWorkbook过程的语句顺序反了,应先保存,再关闭。两句可以合并为me.close true。关于workbook的close方法,建议查看一下帮助  发表于 2015-6-12 22:46

评分

参与人数 1 +9 金币 +9 收起 理由
云子 + 9 + 9 赞一个!

查看全部评分

回复

使用道具 举报

发表于 2015-6-13 08:53 | 显示全部楼层
云子辛苦,D05-Addnins交作业:
  1. Public Close_ As Boolean '“关闭按钮”过程初始值
  2. Sub 关闭按钮()
  3.     Close_ = True               '设置初始值为真
  4.     ActiveWorkbook.Close True   '关闭工作簿并自动保存
  5. End Sub
  6. Private Sub Workbook_BeforeClose(Cancel As Boolean)
  7.     If Close_ = True Then                    '如果初始值设置为真
  8.         Cancel = False                      '允许执行关闭动作
  9.         Close_ = False                      '复归初始值
  10.     Else
  11.         Cancel = True                   '初始值未变化禁止关闭工作簿
  12.         MsgBox "此功能已经被禁止,请使用""关闭""按钮关闭工作簿!", vbExclamation, "提示"     '警告
  13.     End If
  14. End Sub
复制代码

点评

布尔型变量初始化是false,if语句部分可以简化。非常棒!  发表于 2015-6-17 23:24

评分

参与人数 1 +10 金币 +10 收起 理由
云子 + 10 + 10 赞一个!

查看全部评分

回复

使用道具 举报

发表于 2015-6-13 09:03 | 显示全部楼层
一村之长 发表于 2015-6-12 08:01
D15:一村之长
代码存放在ThisWorkbook
学委美女大人辛苦了,一定要给高分哦么么哒,虽然不是第一 ...

{:011:}这样才能证明我真的是菜鸟啊
回复

使用道具 举报

发表于 2015-6-14 20:56 | 显示全部楼层
D20:xk465592765
  1. Public AN As Boolean    '定义一个公共变量用来标记是否点击了
  2. Sub 退出()
  3.     AN = True    '当点击的指定按钮后,将标志为设为已点击,然后再关闭工作簿
  4.     ActiveWorkbook.Save    '活动状态的工作薄进行保存
  5.     Application.Quit    '退出 Microsoft Excel
  6. End Sub
  7. Private Sub Workbook_BeforeClose(Cancel As Boolean)    '工作簿关闭事件,当工作簿关闭前触发
  8.     If Not AN Then    '当标志变量为False时,即未点击指定按钮
  9.         MsgBox "此功能已经被禁止,请使用“关闭”按钮关闭工作簿!", vbExclamation, "提示"
  10.         Cancel = True    '取消关闭的操作
  11.     End If
  12. End Sub
复制代码

点评

哦,我看错了,完全正确!!  发表于 2015-6-17 23:18
第八行代码逻辑恰好反了吧,你测试过效果没?  发表于 2015-6-17 23:09

评分

参与人数 1 +10 金币 +10 收起 理由
云子 + 10 + 10 赞一个!

查看全部评分

回复

使用道具 举报

发表于 2015-6-15 15:39 | 显示全部楼层
  1. C23 UPDATING
  2. Option Explicit

  3. Private Sub Workbook_BeforeClose(cancel As Boolean)
  4.     cancel = 1
  5.     MsgBox "此功能已经被禁止,请使用“关闭”按钮关闭工作簿!", vbExclamation, "提示"

  6. End Sub

  7. Sub 关闭()
  8.     Application.DisplayAlerts = 0
  9.     Dim cancel As Boolean

  10.     Workbook_BeforeClose (cancel = 0)

  11.     Save
  12.     cancel = 0
  13.     Application.DisplayAlerts = 1
  14. End Sub
复制代码

点评

按钮过程不能实现题目要求效果,请参看其他同学的答案,加油!  发表于 2015-6-17 23:29

评分

参与人数 1 +7 金币 +7 收起 理由
云子 + 7 + 7 赞一个!

查看全部评分

回复

使用道具 举报

发表于 2015-6-15 17:32 | 显示全部楼层
D04:contending   不会做
  1. Private Sub Workbook_BeforeClose(cancle As Boolean)
  2.             MsgBox "此功能已经被禁止,请使用“关闭”按钮关闭工作簿!"
  3.      If ThisWorkbook.Saved = True Then
  4.          ThisWorkbook.Save
  5.       cancle = True
  6.     End If
  7. End Sub



  8. Sub 退出()
  9. For Each WB In Application.Workbooks
  10. Next
  11.     Application.Quit
  12. End Sub


复制代码

点评

没能很好地理解事件,请认真看视频和其他同学的答案,加油  发表于 2015-6-17 23:31

评分

参与人数 1 +6 金币 +6 收起 理由
云子 + 6 + 6 赞一个!

查看全部评分

回复

使用道具 举报

发表于 2015-6-15 21:35 | 显示全部楼层
本帖最后由 纳哥普尔 于 2015-6-15 21:41 编辑

D23:纳哥普尔
作业不会,厚着脸皮交吧
  1. Option Explicit                                ’强制声明变量    ‘

  2. Sub 保存工作簿()
  3.     Dim ipo As String                                 '定义ipo为提示栏的内容
  4.     ipo = "此功能已经被禁止,请使用""关闭""按钮关闭工作簿!"
  5.     'ActiveWorkbook.Save = False                      '想不让关闭工作簿,但不会写
  6.     ActiveWorkbook.RunAutoMacros Which:=xlAutoClose   '用录制屏得到宏,但不知道怎么改
  7.     MsgBox ipo, vbExclamation + vbOKOnly, "提示:"    '以警告+确定的形式显示提示栏
  8.     ActiveWorkbook.Close True                        '保存修改并关闭工作簿
  9. End Sub
复制代码

点评

没很好第理解事件过程,请认真看视频,对比学习其他同学的答案,加油!  发表于 2015-6-17 23:33

评分

参与人数 1 +5 金币 +5 收起 理由
云子 + 5 + 5 赞一个!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-6 20:32 , Processed in 0.198772 second(s), 19 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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