Private Sub Worksheet_Change(ByVal Target As Range)
Dim xR As Range
With Target
If .Columns.Count > 1 Or .Column <> 5 Then Exit Sub
If CK > 0 Then Exit Sub
On Error GoTo 999
CK = 1
For Each xR In .Cells
If xR.Row < 3 Or xR.Value = "" Then GoTo 101
xR.Value = UCase(xR.Value)
101: Next
End With
999: CK = 0
End Sub作者: cypd 時間: 2020-6-9 13:40
回復 8#准提部林
好神奇的語法...感恩
不明白儲存格用
1.輸入的方式
及用 2.複製貼上之方式
兩者間之英文小寫轉換大寫,差異大不同?
懇問程式碼中內的數字各代表甚麼意思?
If xR.Row < 3 Or xR.Value = "" Then GoTo 101
xR.Value = UCase(xR.Value)
101: Next
End With
999: CK = 0作者: 准提部林 時間: 2020-6-9 15:47
Option Explicit
Dim CK%
'↑宣告變數:CK是短整數變數,放在最上端是為了讓此工作表模組都能用
Private Sub Worksheet_Change(ByVal Target As Range)
'↑當使用者或外部連結變更工作表中的儲存格時會發生此事件
Dim xR As Range
'↑宣告變數:xR是儲存格變數
With Target
'↑以下是關於觸發的程序
If .Columns.Count > 1 Or .Column <> 5 Then Exit Sub
'↑如果觸發欄數大於1 或觸發欄位不是第5欄!就結束程式執行
If CK > 0 Then Exit Sub
'↑如果CK變數大於 0!就結束程式執行
On Error GoTo 999
'↑如果以下程式遇到錯誤就跳到標示999位置繼續執行
CK = 1
'↑令CK變數是1,讓後方For Each迴圈不會在觸發
For Each xR In .Cells
'↑設逐項迴圈!令xR變數是觸發格低其中一格
If xR.Row < 3 Or xR.Value = "" Then GoTo 101
'↑如果xR變數所在的列號小於3 或其值是空的,
'就跳到標示101位置繼續執行
xR.Value = UCase(xR.Value)
'↑令xR變數(儲存格)值是英文轉為大寫的新字串
101: Next
End With
999: CK = 0
'↑令CK變數歸零
End Sub作者: cypd 時間: 2023-5-25 01:31