作者skymt333 (..............)
看板Office
标题[问题] 关於VBA 自动存档的问题
时间Wed Mar 30 14:46:18 2022
我在A档案写入
Private Sub workbook_open()
Call AAAsave
End Sub
Private Sub AAASsave()
Application.OnTime Now + TimeValue("00:00:10"), "ThisWorkBook.AAA"
End Sub
Private Sub AAA()
ThisWorkbook.save
Call AAAsave
End Sub
我在B档写入
Private Sub workbook_open()
Call BBBsave
End Sub
Private Sub BBBsave()
Application.OnTime Now + TimeValue("00:00:15"), "ThisWorkBook.BBB"
End Sub
Private Sub BBB()
ThisWorkbook.save
Call BBBsave
End Sub
但现在发生一个问题,两个档案一起打开後,我关掉B档案後,可是当A档案自动存档时,
B档案就会被开启。我关掉A档後,当B档案自动储存开始时,关掉的A档就会被开启。
可否有人能指点一下小弟原因,或是这样写错在哪,
万分感谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.164.3.34 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Office/M.1648622780.A.3B4.html
1F:→ waiter337: Private Sub AAASsave() 03/30 20:48
2F:→ waiter337: Set wb1 = Nothing 03/30 20:49
3F:→ waiter337: On Error Resume Next 03/30 20:49
4F:→ waiter337: Set wb1 = Workbooks("a1.xlsm") 03/30 20:49
5F:→ waiter337: On Error GoTo 0 03/30 20:49
6F:→ waiter337: If Not wb1 Is Nothing Then 03/30 20:49
7F:→ waiter337: Application.OnTime Now + TimeValue("00:00:10"), "Th 03/30 20:49
8F:→ waiter337: isWorkBook.AAA" 03/30 20:50
9F:→ waiter337: End If 03/30 20:50
10F:→ waiter337: End Sub 03/30 20:50
11F:→ waiter337: Private Sub BBBsave() 也仿照改 档名要改 03/30 20:50
12F:推 waiter337: 还是不行的话 就改下面这个 03/30 20:59
13F:→ waiter337: Private Sub AAA() 03/30 21:02
14F:→ waiter337: Set wb1 = Nothing 03/30 21:02
15F:→ waiter337: On Error Resume Next 03/30 21:02
16F:→ waiter337: Set wb1 = Workbooks("a1.xlsm") '这个档案的档名 03/30 21:02
17F:→ waiter337: On Error GoTo 0 03/30 21:02
18F:→ waiter337: If Not wb1 Is Nothing Then 03/30 21:02
19F:→ waiter337: ThisWorkbook.Save 03/30 21:02
20F:→ waiter337: Call AAAsave 03/30 21:02
21F:→ waiter337: End If 03/30 21:03
22F:→ waiter337: End Sub 03/30 21:03
23F:→ waiter337: 另外补充.... 03/30 21:04
24F:→ waiter337: 你的这个写法属於连续触发的写法 03/30 21:04
25F:→ waiter337: aaasave() 跟aaa() 原本就是一套 被你分开写了 03/30 21:05
26F:→ waiter337: 原本应该是这样写的 03/30 21:05
27F:→ waiter337: Private Sub AAAsave() 03/30 21:06
28F:→ waiter337: ThisWorkbook.save 03/30 21:06
29F:→ waiter337: Application.OnTime Now + TimeValue("00:00:10"), 03/30 21:06
30F:→ waiter337: "ThisWorkBook.AAAsave" ,False 03/30 21:07
31F:→ waiter337: End Sub 03/30 21:07
32F:→ waiter337: 所以最後可以改成 03/30 21:09
33F:→ waiter337: Private Sub AAAsave() 03/30 21:09
34F:→ waiter337: Set wb1 = Nothing: On Error Resume Next 03/30 21:09
35F:→ waiter337: Set wb1 = Workbooks("a1.xlsm"): On Error GoTo 0 03/30 21:09
36F:→ waiter337: If Not wb1 Is Nothing Then 03/30 21:09
37F:→ waiter337: ThisWorkbook.Save 03/30 21:09
38F:→ waiter337: Application.OnTime Now + TimeValue("00:00:10"), _ 03/30 21:09
39F:→ waiter337: "ThisWorkBook.AAAsave", False 03/30 21:09
40F:→ waiter337: End If 03/30 21:09
41F:→ waiter337: End Sub 03/30 21:10
42F:→ waiter337: 总之就是加入了一个判断工作簿是否开启才能触发定时器 03/30 21:14
43F:→ skymt333: 照W大您的方式修改後好像还是停不住 03/30 23:44
44F:→ skymt333: 但还是感谢您指出问题点,我再研究一下如何改 感谢 03/30 23:46
47F:→ skymt333: 还让您弄教学影片,真是不好意思,我晚上下班後研究,感 03/31 13:57
48F:→ skymt333: 谢啊 03/31 13:57