楼主 罗刚君 |
罗刚君VBA免费课作业题】之第20课作业 提示:此题目是“VBA入门免费教学群”(群号:30729794)的课后作业 请未参与听课者绕道,谢谢配合。 _____________________________________________________ 题一:
请问为什么第二句“Com.Text Com.Text & Chr(10) & Date”中可以不用Cstr函数也可以让代码正常行行呢? 题目二:
问题三: 如何实现工作簿只能在2013年7月31日以前打开?如果超过了7月31日,那么打开工作簿后工作簿会自动关闭。 提示:将过程命名为“Auto_open”可让代码随工作簿开启而自动执行,将过程命名为“Auto_Close”可让代码随工作簿关闭而自动执行。 _____________________________________________________ 补充:“VBA入门免费教学群”(群号:30729794)每周三上课一次,有兴趣者皆可报名,永远免费。 请提交作业时注明在免费听课群的昵称。三次不交作业者,将踢出群,让出空间让更多的人进来听课,请大家配合。 |
2楼 静思雨 |
1、& 连接时 默认就是想string转换 所以不需要cstr转换 2、 '保存工作簿时执行此过程 Private Sub Workbook_BeforeClose(Cancel As Boolean) Dim rng As Range '声明一个单元格对象变量 Set rng = Range("a10") '对对象赋值 If Len(rng) = 0 Then '如果变量所代表的单元格是空白的 Cancel = false '准许关闭 MsgBox rng.Address & "单元格不能空白!", vbOKOnly, "友情提示" '提示用户 End If End Sub 3、 Sub Auto_Open() If Date > #2013-7-31# Then ThisWorkbook.Close Application.Quit End If End Sub |
3楼 wendel |
1、因为表达式中使用了字符连接运算符:&,日期这里被VBA转变为字符串参与运算。 2、'保存工作簿时执行此过程 Private Sub Workbook_BeforeClose(Cancel As Boolean) Dim rng As Range '声明一个单元格对象变量 Set rng = Range("a10") '对对象赋值 If Len(rng) = 0 Then '如果变量所代表的单元格是空白的 Cancel = false '准许关闭 MsgBox rng.Address & "单元格不能空白!", vbOKOnly, "友情提示" '提示用户 End If End Sub 3、Sub auto_open() If Now() > #7/31/2013# Then MsgBox "该工作簿不能于2013年7月31日后使用", vbOKOnly Application.Quit End If End Sub |
4楼 kcxs |
客城小生的作业 1、答:因为前面有文本内容连接,也就变成文本了。 2、答:方法1:在A10录入任意数据,然后不保存更改关闭。然后新建一个工作薄,在模块中录入如下代码: Sub 关闭第一个工作簿() Workbooks(1).Close SaveChanges:=False '关闭工作簿,不保存更改 End Sub 方法2:新建一个工作薄,在模块中录入如下代码: Sub 关闭第一个工作簿() Workbooks(1).Worksheets(1).Range("a10") = 1 '对第一个工作簿第1个工作表的A10单元格赋值为1 '关闭第一个工作簿 Workbooks(1).Close SaveChanges:=False '关闭工作簿,不保存更改 End Sub 3、答: Sub Auto_open() Dim LastSaveTime As Date '声明变量,日期型变量 LastSaveTime = ActiveWorkbook.BuiltinDocumentProperties("Last Save Time").Value '计算最后一次保存时间 If LastSaveTime - DateValue("2013-07-31") > 0 Then '如果超过了2013年7月31日 ActiveWorkbook.Close , False '关闭 End If End Sub |
5楼 健康快乐123 |
第一题:因为第一个是空的所有需要把日期变为文本才能填入,而第二个中已经有文本了再连接上日期它还是文本,所以可以填入。 第二题: 第三题: |
6楼 冰淇林的冬天 |
第一题 数值单独存在的时候是数值,当数值和文本在一起的时候,数值就自动转为文本 就像在A1单元格输入1时,1表是数值,但在输入一个文本字符时,A1单元格的内容就变成了文本 第二题 Sub 关闭工作薄() If Range("A10") = "" Then Range("A10") = " " Application.DisplayAlerts = False ThisWorkbook.Close End If End Sub Sub AUTO_OPEN() If Range("A10") = " " Then Range("A10").Clear End Sub 第三题 Sub AUTO_OPEN() Dim ti As Date ti = Now() If ti < CDate("2013-7-31") Then Exit Sub Else Application.DisplayAlerts = False ThisWorkbook.Close End If End Sub |
7楼 ♂苯尛藸 |
1 text属性本身返回字符类型,而且& 连接符是连接字符串的,自动隐形转换 2 代码多加判断,比如点一个H21单元格就直接退出保存,或者按下特殊健,捕捉键码来退出。 3 在打开事件,或者active事件判断date与2013--7-1比较,如果不符合就关闭工作簿 |
8楼 manuel442 |
QQ昵称:智山仁水 1、&运算将最后 的结果 转换成了字符型的 2、'保存工作簿时执行此过程 If Format(Now(), "yyyy/m/d h:m") <> "2013/7/24 22:6" Then If Len(rng) = 0 Then '如果变量所代表的单元格是空白的 Cancel = True '禁止关闭 MsgBox rng.Address & "单元格不能空白!", vbOKOnly, "友情提示" '提示用户 End If End If 3、Sub auto_open() If Format(Now(), "yyyy/m/d") > "2013/7/31" Then ThisWorkbook.Close (False) End If End Sub |
9楼 ynzsvt |
题一: 因为 & 进行运算时已经将前后的非字符转换成字符啦。 题目二: 在cancel处设置断点,中断执行就能保存文件。 问题三: Sub auto_open() If Date >= #7/31/2013# Then ThisWorkbook.Close False End Sub |
10楼 本人号被盗, |
不太懂。 1、前面有&连接 2、不知道哦 3、根据老师的提示,应该编制两个过程,中间如何连接,不懂。 |
11楼 mmice |
交作业: 问题一:Com.Text Com.Text & Chr(10) & Date 因为第二个Com.Text在这里是方法,后面可直接跟函数 ========================================== 问题二:Private Sub Workbook_BeforeClose(Cancel As Boolean, ByVal Target As Range) Dim rng As Range, Y As Interge '声明一个单元格对象变量 Set rng = Range("a10") '对对象赋值 If Len(rng) = 0 Then '如果变量所代表的单元格是空白的 Y = MsgBox(rng.Address & "单元格不能空白!", vbOKOnly, "友情提示") '提示用户 If Y = vbYes Then Workbooks.Close End If End If End Sub ============================================== 问题三: '如何实现工作簿只能在2013年7月31日以前打开?如果超过了7月31日,那么打开工作簿后工作簿会自动关闭。 '提示:将过程命名为“Auto_open”可让代码随工作簿开启而自动执行,将过程命名为“Auto_Close”可让代码随工作簿关闭而自动执行。 Sub Auto_Open() Application.DisplayAlerts = False '关闭警告信息 If CStr(Date) < "2013-7-31" Then Workbooks.Open "C:\Documents and Settings\mmice\My Documents\下载\替代.xlsx" Application.DisplayAlerts = True '打开警告信息 End If End Sub Sub Auto_Close() Application.DisplayAlerts = False '关闭警告信息 If CStr(Date) > "2013-7-31" Then Workbooks.Close '这个加True会报错 Application.DisplayAlerts = True '打开警告信息 End If End Sub 群名片:小白 |
12楼 lb425319789 |
本次作业感觉并不算难,可是因听课中间知识有些断层,还是听老师下次上课讲解本次作业吧。 |
13楼 jsrgsunny |
江苏-阳光明媚 1、前面的Text是方法,是一个动词,后面的Text是名词,它是属性,也就是文本。 3、Sub Auto_Open() If date> CDate("2013-7-31") Then ThisWorkbook.Close False End Sub |
14楼 lfwxszw |
第一题: 因为有批注的话,已经是文本格式的,连接日期后也就直接变成文本格式了。 第二题: Application.EnableEvents = False Application.EnableEvents = True 第三题: Sub auto_open() Dim odate As Date '定义odate变量 odate = Date '当前日期赋值给变量 If odate > "7/31/2013" Then ActiveWorkbook.Close '如果日期大于2013-7-31,关闭工作簿 End Sub 也能放在workbook的 Workbook_Open() 事件中 |
15楼 lb425319789 |
问题三: 如何实现工作簿只能在2013年7月31日以前打开?如果超过了7月31日,那么打开工作簿后工作簿会自动关闭。 sub auto_open() if date >= #7/31/2013# then ActiveWorkbook.saved = true ActiveWorkbook.close end sub |