我正在使用下面的代碼將列 E 上的更改與某些條件相交,其中一個條件是如果目標更改值不為 null 則觸發,事件的效果應用沒有問題,但是如果選擇并洗掉了兩個單元格(或更多)在同一行目標上我得到了這個錯誤
運行時錯誤 13:型別不匹配
這是錯誤的原因Target.value <> ""
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("E:E")) Is Nothing And _
Target.Columns.Count = 1 And _
Target.Row > 1 And _
Target.value <> "" Then
Application.EnableEvents = False
'Some codes here
Application.EnableEvents = True
End If
End Sub
感謝您的評論和回答。
uj5u.com熱心網友回復:
您只檢查Target.Columns.Count但Target也可以是多行。然后Target.value是一個值陣列,= ""沒有回圈就無法比較陣列。
因此,替換Target.Columns.Count = 1為Target.Cells.CountLarge = 1以確保Target只有一個單元格,或者回圈遍歷Target與您的范圍相交的所有單元格E:E。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim AffectedRange As Range
Set AffectedRange = Intersect(Target, Me.Range("E:E"))
If Not AffectedRange Is Nothing Then
Dim Cell As Range
For Each Cell in AffectedRange
' here you can handle each cell that has changed in E:E
Next Cell
End If
End Sub
題外話:
您使用它Application.EnableEvents = False確保如果發生錯誤,您會重新打開事件!否則,您的事件將在整個 Excel 中關閉,直到您關閉它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/443981.html
上一篇:如果區間包含一個值回傳對應的
下一篇:任何一個復選框只能為真
