- 帖子
- 1447
- 主題
- 40
- 精華
- 0
- 積分
- 1471
- 點名
- 0
- 作業系統
- Windows 7
- 軟體版本
- Excel 2010 & 2016
- 閱讀權限
- 50
- 性別
- 男
- 來自
- 台灣
- 註冊時間
- 2020-7-15
- 最後登錄
- 2025-5-5
|
10#
發表於 2023-5-15 08:26
| 只看該作者
本帖最後由 Andy2483 於 2023-5-15 08:28 編輯
回復 9# cypd
謝謝前輩回復,一起學習
後學今天複習這帖,方案學習心得註解如下,請前輩參考
Option Explicit
Sub TEST_2()
Dim Brr, i&, Y%, M%, D1 As Date, D2 As Date
'↑宣告變數
Y = [AH1] + 1911: M = [AH2]: D1 = Y & "/" & M & "/" & "1"
'↑令Y變數是 [AH1]儲存格值+1911,
'令M變數是 [AH2]儲存格值,
'令D1這日期變數是 西元年/月/1
Y = IIf(M = 12, Y + 1, Y): M = IIf(M = 12, 1, M + 1)
'如果月份是12,就令年分+1,
'如果月份是12,就令月份是 1月,否則就將月份+1,
'這是要處裡跨年辨認12月最後一天
D2 = Y & "/" & M & "/" & "1": D2 = D2 - 1
'↑令D2這日期變數是 西元年/月/1 (D2是下個月的第1天)
'↑令D2變數是自身日期的前一天(也就是上個月的最後一天)
With [A4:B65]
'↑以下是關於儲存格的程序
.ClearContents: Brr = .Value
'↑清除儲存格內容
.FormatConditions.Delete
'↑刪除格式化條件
.Interior.ColorIndex = xlNone
'↑令儲存格底色是 無色
For i = 0 To (D2 - D1)
'↑設順迴圈
Brr(i * 2 + 1, 1) = D1 + i + 1: Brr(i * 2 + 1, 2) = Right(Format(D1 + i + 1, "aaa"), 1)
'↑令日期與星期寫入Brr陣列裡
If InStr("六日", Brr(i * 2 + 1, 2)) Then Cells(i * 2 + 4, "B").Interior.ColorIndex = 38
'↑令即將是星期六日的儲存格底色先變為桃紅色
Next
.Value = Brr
'↑令Brr陣列值寫入儲存格中
End With
End Sub |
|