2014-01-28 34 views
2

嗨我想在我的電子表格上運行以下vb代碼,但在Randge中出現數據類型不匹配時出現錯誤。我只是試圖鎖定值爲0的單元格。有一些單元格帶有#NA值任何想法?迭代範圍內的單元格時出現類型不匹配錯誤

Sub Test() 
Dim Cell As Range 
Set MyPlage = Range("J6:J1074") 
For Each Cell In MyPlage.Cells 
    If Not IsError(Cell) Then 
     If Range("J6:J1074").Value = "0" Then 
     Range("J6:J1074").Locked = True 
     End If 


    End If 

Next 
End Sub 
+2

提示:當您遍歷範圍內的單元格,你應該檢查當前的目標你」重複迭代,而不是整個範圍。見@ simoco的答案。注意他如何使用'Cell.Value'而不是整個範圍。 :) – Manhattan

回答

1

試試這個:

Sub Test() 
    Dim Cell As Range 
    Dim MyPlage As Range 

    With ThisWorkbook.ActiveSheet 
     .Unprotect 
     .Cells.Locked = False 
     Set MyPlage = .Range("J6:J1074") 
     For Each Cell In MyPlage 
      If Not IsError(Cell) Then 
       If Cell.Value = "0" Then 
        Cell.Locked = True 
       End If 
      End If 
     Next 
     .Protect 
    End With 

End Sub 

順便說一句,這是更好地改變ActiveSheetWorksheets("SheetName")

+1

+1:這會起作用,但指出鎖定單元格將不起作用,除非表單受到保護。儘管如此,希望OP知道這一點。 – Manhattan

+0

謝謝,當我運行宏時,什麼都沒有發生,單元格沒有鎖定? – user1342164

+1

@ user1342164:正如我指出的那樣,請查看我的評論。您必須保護表單以使其被鎖定。突出顯示範圍內的任何「0」值單元格並按下「Ctrl-1」。轉到「保護」選項卡。你會看到'Locked'被選中,但是那裏有警告。 – Manhattan

相關問題