[英]Type 13 mismatch error
我收到Excel VBA的13型不匹配錯誤。 一旦進行更改,此腳本將檢查兩個列並鎖定列中的單元格;如果用戶單擊該單元格並單擊而不進行任何更改,則該腳本不會鎖定它。 第五行顯然是罪魁禍首。 任何幫助深表感謝。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim A As Range
Set A = Union(Range("I:I"), Range("J:J"))
If Intersect(Target, A) Is Nothing Then Exit Sub
If Target.Value = "" Then Exit Sub
ActiveSheet.Unprotect Password:="YourPassword"
Target.Locked = True
ActiveSheet.Protect Password:="YourPassword"
End Sub
目標是已更改的一個或多個單元。 如果Target大於單個單元格(例如,粘貼的值塊等),則Target沒有.Value。 If Target.Count > 1 Then Exit Sub
添加, If Target.Count > 1 Then Exit Sub
在代碼頂部If Target.Count > 1 Then Exit Sub
或遍歷Target,檢查Target中每個單元的.Value。
后者的例子,
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Union(Range("I:I"), Range("J:J"))) Is Nothing Then
On Error GoTo bm_Safe_Exit
ActiveSheet.Unprotect Password:="YourPassword"
Application.EnableEvents = True
Dim ij As Range
For Each ij In Intersect(Target, Union(Range("I:I"), Range("J:J")))
If ij.Value <> "" Then
ij.Locked = True
End If
Next ij
End If
bm_Safe_Exit:
ActiveSheet.Protect Password:="YourPassword"
Application.EnableEvents = True
End Sub
此外,在Worksheet_Change事件宏中使用ActiveSheet屬性不被視為“最佳實踐”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.