- 帖子
- 1567
- 主題
- 40
- 精華
- 0
- 積分
- 1591
- 點名
- 0
- 作業系統
- Windows 7
- 軟體版本
- Excel 2010 & 2016
- 閱讀權限
- 100
- 性別
- 男
- 來自
- 台灣
- 註冊時間
- 2020-7-15
- 最後登錄
- 2026-2-2
|
34#
發表於 2023-7-25 07:21
| 只看該作者
回復 33# coafort
謝謝前輩再回復
後學藉此帖複習方案,方案心得註解如下,請前輩參考
Option Explicit
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim Wi%, xA As Range, xR As Range, xP As Range, xI As Range
'↑宣告變數:Wi是短整數,(xA,xR,xP,xI)都是儲存格變數
With Target
On Error GoTo 99
'↑程序遇到錯誤就跳到標示 99的位置繼續執行
Set xA = Intersect(.Cells, Range([A1], ActiveSheet.UsedRange)).SpecialCells(4)
'↑令xA變數是 交集格(觸發格與有使用格)裡的空白格
Wi = .Worksheet.Index
'↑令Wi變數是 觸發工作表索引號
If InStr("/2/3/", "/" & Wi & "/") Then Set xP = [A:A,AA:AA,AO:AO,P3:P23,T3:T23,P27:P40,T27:T40]
'↑如果觸發工作表索引號是 2或3 ,就令xP變數是[]裡的儲存格
If InStr("/4/5/7/8/", "/" & Wi & "/") Then Set xP = [A:A,AD:AD,AS:AS,Q3:Q23,V3:V23,Q27:Q40,V27:V40]
'↑如果觸發工作表索引號是 4.5.7或8 ,就令xP變數是[]裡的儲存格
Set xI = Intersect(xP, xA)
'↑令xI變數是 交集格(xP變數與xA變數)
If xI Is Nothing Then Exit Sub
'↑如果xI變數是 無物件? True就結束程序執行
If Intersect(xI, .Cells) Is Nothing Then Exit Sub
'↑如果交集格(xI變數與觸發格)是 無物件? True就結束程序執行
For Each xR In xI: xR.Offset(, 1).ClearContents: Next
'↑設逐項迴圈!令xR變數是 xI變數裡的一格,令右側隔壁格清除內容
99: End With
End Sub |
|