[問題] VBA Sheets.Count

看板Office作者 (有緣人)時間9年前 (2017/02/23 22:27), 9年前編輯推噓0(0027)
留言27則, 3人參與, 最新討論串1/1
(若是和其他不同軟體互動之問題 請記得一併填寫) 軟體:Office 版本:2010 VBA Sheets.Count執行第一次 , 執行第二次會一直累加 如何清除為零? If xRow > 60000 Then n = n + 1 Sheets.Add After:=Sheets(Sheets.Count) '新增工作表並放在最後面 Sheets("工作表" & n).Select '選擇工作表 xRow = 0 上面是說明檔案超過60000行 , 會把其它檔案放到工作表1 但現在有個問題 , 下次再執行時Sheets.Count不會從1開始 , 會從2開始 , 這是 為什麼呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.241.96.6 ※ 文章網址: https://www.ptt.cc/bbs/Office/M.1487860077.A.3AD.html

02/23 22:34, , 1F
sheets.count在不增加工作表下,執行次數下會累加?
02/23 22:34, 1F

02/23 22:38, , 2F
就是Sheets.Add後會一直累加 , 要如何在下次執行時清零
02/23 22:38, 2F

02/23 22:40, , 3F
活頁簿內至少須有一張未隱藏的工作表,sheets.count如何清
02/23 22:40, 3F

02/23 22:40, , 4F
除為零
02/23 22:40, 4F

02/23 22:40, , 5F
Sheets.Add after:=Sheets(Sheets.Count)
02/23 22:40, 5F

02/23 22:45, , 6F
貼巨集碼也不會知道原po希望要的結果是什麼
02/23 22:45, 6F
原有的Sheet1=>工作表1=>工作表2 執行時先刪除工作表1=>工作表2 再新增工作表1 =>工作表2 下次執行先刪除工作表1=>工作表2 再新增工作表1=>工作表2...... 以此類推 ※ 編輯: aup65797 (123.241.96.6), 02/23/2017 22:55:56

02/23 22:55, , 7F
如要每次新增工作表於某張工作表後面,以sheets(工作表名)
02/23 22:55, 7F
※ 編輯: aup65797 (123.241.96.6), 02/23/2017 22:57:16 ※ 編輯: aup65797 (123.241.96.6), 02/23/2017 23:08:37

02/23 23:06, , 8F
回文的工作表2是指工作表"二"嗎?
02/23 23:06, 8F
※ 編輯: aup65797 (123.241.96.6), 02/23/2017 23:09:24

02/23 23:11, , 9F
刪除工作表名和新增工作表名相同嗎?
02/23 23:11, 9F

02/23 23:12, , 10F
相同的
02/23 23:12, 10F

02/23 23:14, , 11F
應該說不一定相同 , 因為你不知道下次檔案會有多大,可能
02/23 23:14, 11F

02/23 23:14, , 12F
更大 , 需要新增工作表3 工作表4
02/23 23:14, 12F
※ 編輯: aup65797 (123.241.96.6), 02/23/2017 23:15:31

02/23 23:17, , 13F
原文問到為什麼不會從1開始,因sheets.count為計數活頁簿
02/23 23:17, 13F

02/23 23:17, , 14F
工作表數量
02/23 23:17, 14F

02/23 23:19, , 15F
如要保持為1起累加,改以變數=變數+1
02/23 23:19, 15F

02/23 23:20, , 16F
如Sheets("工作表1").Delete Sheets.Count會變少嗎?
02/23 23:20, 16F

02/23 23:22, , 17F
會變少,但活頁簿內至少須有一張未隱藏的工作表
02/23 23:22, 17F
另外請教Sheets.Add 他可否新增工作表1 工作表2 下次執行也是新增工作表1 工作表2 ※ 編輯: aup65797 (123.241.96.6), 02/23/2017 23:30:19

02/23 23:41, , 18F
可以worksheet.name設定
02/23 23:41, 18F

02/24 10:36, , 19F
在If xRow > 60000 Then 之前加上以下的程式碼
02/24 10:36, 19F

02/24 10:36, , 20F
If Sheets.Count > 1 Then
02/24 10:36, 20F

02/24 10:36, , 21F
Application.DisplayAlerts = False
02/24 10:36, 21F

02/24 10:37, , 22F
For i = Sheets.Count To 2 Step -1
02/24 10:37, 22F

02/24 10:37, , 23F
Sheets(i).Delete
02/24 10:37, 23F

02/24 10:37, , 24F
Next i
02/24 10:37, 24F

02/24 10:37, , 25F
Application.DisplayAlerts = True
02/24 10:37, 25F

02/24 10:37, , 26F
End If
02/24 10:37, 26F

02/26 10:45, , 27F
感謝 , 解決了
02/26 10:45, 27F
文章代碼(AID): #1Ohl5jEj (Office)
文章代碼(AID): #1Ohl5jEj (Office)