- 帖子
- 913
- 主題
- 150
- 精華
- 0
- 積分
- 1089
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- office 2019
- 閱讀權限
- 50
- 性別
- 女
- 註冊時間
- 2011-8-28
- 最後登錄
- 2023-7-19
 
|
本帖最後由 PJChen 於 2020-1-26 22:00 編輯
回復 9# 准提部林
請問准大,
同個檔案,Sheet以1~31命名,其中也有非數字的工作表,我需要一個可以刪除大於月底日工作表的功能(非數字的工作表不刪,目前排序,第一個工作表為文字工作表),如果當月正好是31天,也都不用刪除工作表,
程式碼很長,我只截取一部份,以下這句, 一直執行得很怪,存檔時為2月份日期,2月份有29日,它卻只刪除29、31的工作表,我需要刪除的是30、31的工作表,請問可以怎麼修正程式?
Sheets(j).Delete '刪除大於月底日的工作表- Dim Path As String, myPath As String, File As String, xFile As String, i As String, m As String, xd As Long, j As Long, xJ As Long, k As Long
- i = DateSerial(Year(Date), Month(Date) + 1, 1) '設定下個月1日
- m = Format(i, "M月") '設定下個月份
- xd = Format(DateSerial(Year(Date), Month(Date) + 2, 1) - 1, "D") '下個月底日變數
- With Workbooks.Open(Path & File)
- For j = 2 To ActiveWorkbook.Sheets.Count '從#2開始的工作表中循環
- ActiveWorkbook.Sheets(j).Activate
- [A2] = [A2].Value '值化
- [B1] = [B1].Value '值化
-
- If j > xd Then
- Sheets(j).Delete '刪除大於月底日的工作表
- End If
- Next
- Sheets("1").Activate
- For k = 1 To [U1] '將U1儲存格的值,作為變數存取次數,依序命名檔案名並存檔
- [P1] = k '指定儲存格的值
- ActiveWorkbook.SaveAs filename:=myPath & [G1] & " _" & m & ".xlsx" 'one by one 存檔k次
- Next
- ActiveWorkbook.Close True '存檔後關閉檔案
- End With
複製代碼 |
|