簡體   English   中英

類型13不匹配錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM