返回列表 上一主題 發帖

[發問] VBA 清除、還原請教

回復 1# 星空乂羽翼


    謝謝前輩發表此主題與範例檔
後學建議
1.在清除前先複製一個相同的工作表,命名為"備份表"
2.隱藏此備份表
3.在還原時刪除現表,顯示備份表,更名為原現表名
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 3# 星空乂羽翼


    謝謝前輩回復
後學建議如下,請前輩參考

Option Explicit
Public CLearr, xR As Range
Sub 清除III()
Dim N1%, N2%
Set xR = [訂餐日程表!C6:AG38]
N1 = xR.Count
On Error GoTo Rear
N2 = xR.SpecialCells(2).Count
If N2 < (N1 \ 100) Then GoTo Rear
CLearr = xR: xR.ClearContents
Rear: End Sub
Sub 還原III()
If Not xR Is Nothing Then xR = CLearr
End Sub
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 5# 星空乂羽翼


1.還原III 只執行 清除III 的還原
2.其他動作的還原需使用Excel 復原功能
3.請上傳範例
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 7# 星空乂羽翼

指定巨集需設為 還原III
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 9# 星空乂羽翼


    謝謝前輩回復

Option Explicit
Public CLearr, xR As Range
'↑宣告全域變數
'↑因為(CLearr,xR)設為全域變數又變數沒有被釋放掉,
'所以用此方式還原,純屬亂拼湊的,非專業方法,拋磚引玉請各位前輩指教

Sub 清除III()
Dim N1%, N2%
'↑宣告變數
Set xR = [訂餐日程表!C6:AG38]
'↑令xR變數是 [訂餐日程表!C6:AG38]儲存格
N1 = xR.Count
'↑令N1變數是 儲存格數量
On Error GoTo Rear
'↑令程序遇到錯誤時就跳到標示 Rear位置繼續執行
N2 = xR.SpecialCells(2).Count
'↑令N2變數是 xR變數非空格的數量 (如果沒有非空格會出錯)
'↑防止重複按 清除III

If N2 < (N1 \ 100) Then GoTo Rear
'↑如果非空格儲存格少於1%? 是就跳到標示 Rear位置繼續執行
'↑臆測 清除III只會在月底或每月第1天才執行,
'所以資料太少不能清除

CLearr = xR: xR.ClearContents
'↑如果程序有跑到這裡就令 CLearr變數是 二維陣列,以xR儲存格值帶入,
'↑令xR儲存格值清除

Rear: End Sub

Sub 還原III()
If Not xR Is Nothing Then xR = CLearr
'↑如果xR變數有物件? 是就令xR儲存格寫入 CLearr陣列值
'因為還沒有執行 清除III 之前xR Is Nothing

End Sub
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 11# 星空乂羽翼


    謝謝前輩繼續一起學習

1.Rear


2.90%
N2 < (N1 * 0.9)

PS:
N1 /100 = N1 的 1% = N1 * 0.01
N1 的 90%= N1 * 0.9
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 13# 星空乂羽翼


   
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

本帖最後由 Andy2483 於 2023-6-12 07:27 編輯

回復 16# 准提部林

設個備份區或備份表, 清除時將資料丟進去,
免得清除後又儲存關檔, 重開時資料全沒 ...
准提部林 發表於 2023-6-11 11:30 [/quote]



    請前輩指導
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 23# 准提部林


    謝謝前輩指導
前輩心思縝密,自嘆弗如
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

        靜思自在 : 成功是優點的發揮,失敗是缺點的累積。
返回列表 上一主題