後學的學習心得如下,請前輩再指導!謝謝
Option Explicit
Dim stopA, R&
'↑宣告變數!(stopA)是通用型變數,R是長整數
Private Sub Worksheet_Change(ByVal Target As Range)
'↑儲存格內容編輯觸發事件
If stopA = True Then Exit Sub
'↑如果stopA 這變數是布林值 True!就跳出程式執行
'這stopA 的初始值是 無
If Target.Count > 1 Then Exit Sub
'↑如果觸發格超過1格!就跳出程式執行
If Target.Column <> 3 Then Exit Sub
'↑如果觸發格不是在第三欄!就跳出程式執行
If Target.Row = 1 Then Exit Sub
'↑如果觸發格在第一列!就跳出程式執行
R = Cells(Rows.Count, 2).End(xlUp).Row
'↑令R變數 是B欄最後的有內容儲存格列號
If Target.Row > R Then Exit Sub
'↑如果觸發格的列號大於 R變數
If UCase(Target.Value) <> "V" Then Exit Sub
'↑如果觸發格的值轉大寫之後不是"V"英文字母!就跳出程式執行
'前面這些都是為了讓不符合需要的條件都 跳出程式執行
stopA = True
'↑令stopA 是布林值 True
Range("c2:c" & R).ClearContents
'↑令[C2]到C欄的R變數列儲存格清除內容
'1.這個動作會讓程序跳到最前面繼續執行,因為.ClearContents(清除內容)本來就是編輯儲存格
'所以初次觸發並沒有跑到下面的程序
'2.到了 If stopA = True Then Exit Sub 跳出程式執行 並還沒真正結束!
'因為第一次的觸發還沒往下跑完,會繼續往下程序繼續跑
Target.Value = "V"
'↑令觸發格的值是 "V"
stopA = False
'↑令stopA 這布林變數為 False
CommandButton1.Caption = Target.Offset(0, -1)
'↑令按鈕文字是 觸發格偏移左邊一欄的值
End Sub