iT邦幫忙

0

[VBA]如何讓特定欄更改資料時,進行程度判別

請問有哪位高手可以教我,我想要讓資料填完時,自動感應是否更改的欄位為A
https://ithelp.ithome.com.tw/upload/images/20201126/20133012HD9C6bw4pF.png
並且對資料做分級
https://ithelp.ithome.com.tw/upload/images/20201126/201330128ephpoiAUO.png
目前有的概念是
Private Sub Worksheet_Change(ByVal Target As Range)
Dim col, row As Integer
Dim i As Integer
col = Target.Column
row = Target.row
i = Target.Column + 1

If Cells(row, col) >= 0.9 Then Cells(row, i) = "A級"
ElseIf Cells(row, col) >= 0.8 Then Cells(row, i) = "B級"
Else: Cells(row, i) = "C級"
End If
End If

End Sub
但是不知道能不能加一個判斷是否為A欄更改 (A欄做資料變更時再做分級的計算)

條件式判斷也很好用,免寫vba用函數達成。

1 個回答

0
海綿寶寶
iT邦大神 1 級 ‧ 2020-11-27 08:34:50
最佳解答

當然可以

Private Sub Worksheet_Change(ByVal Target As Excel.Range) 
    If Target.Column = 1 Then 
        ...你要做的事情...
    End If 
End Sub

提供參考微軟官方範例

MagarDane iT邦新手 5 級 ‧ 2020-11-27 20:46:07 檢舉

海大哥,我發現我在worksheet_change下方輸入任何式子都無法作用
後來換到工作表輸入,發現式子可以套用了,可以請教是為什麼嗎?
https://ithelp.ithome.com.tw/upload/images/20201127/20133012KCeX9Lao8n.png

因為 Worksheet_Change 是在某個 Worksheet 裡專有的事件
定義是「當工作表變更時,執行...」
所以必須「歸屬」在某個工作表「裡面」才會有作用
就像上圖裡的下半部,歸屬在「工作表1」
像 Worksheet_Change 還有許多事件
可參考微軟說明

如果你輸入在 Module1 裡(上圖裡的上半部)
那就只是一個自定函數
只有被呼叫時才會有作用

其實你只要想一點就會明白了
當你的檔案裡有多張工作表時
Worksheet_Change 應該寫在那裡比較合理?
或者說
每張工作表都有自己的 Worksheet_Change

MagarDane iT邦新手 5 級 ‧ 2020-11-28 00:12:32 檢舉

我是最近才開始學習,感謝海大哥耐心的解釋!

我要發表回答

立即登入回答