13型不匹配错误

Excel VBA收到types13不匹配错误。 此脚本检查两列,并在更改后locking列中的单元格,或者如果用户单击单元格并单击closures而不进行任何更改,则locking该单元格。 5号线显然是罪魁祸首。 任何帮助深表感谢。

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到代码顶部或通过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事件macros中使用ActiveSheet属性不被视为“最佳做法”。