2016-09-20 79 views
0

我試圖創建一個宏,它將根據AB 中的內容修改S,W和AH列中的內容。如果AB1 =否,則S1 = C-MEM,AH = N/A並且W被清除。Excel中的VBA返回類型不匹配

出於某種原因,我在if語句的第一行出現'Type mismatch'錯誤,無法找出爲什麼或者如何修復它 - 即使在閱讀了其他關於類似問題的文章之後。

Sub test() 
    Dim lastrow As Long 
    Dim i As Long 
    lastrow = Range("AB" & Rows.Count).End(xlUp).Row 
    For i = 2 To lastrow 
    **-> If Range("AB" & i).Value = "No" Then 
      Range("S" & i).Value = "C-MEM" 
      Range("W" & i).Value = "" 
      Range("AH" & i).Value = "N/A" 
     End If 
    Next i 
End Sub 

感謝

+2

嗯,我不能重複你的錯誤。它適合我。 (Excel 2016)。創建一個全新的工作簿,在「AB」列中輸入一些數據,然後查看它是否有效。 – BruceWayne

+1

您可能在列中有錯誤。 –

+0

我已經有一次或兩次這個宏工作了。我認爲問題的一部分是我有其他的宏在同一列之前運行。我懷疑其他宏可能以某種方式改變列/單元格的屬性?奇怪的是,當我在同一張表的另一列上試試這個宏時,它工作正常。 – Pomul

回答

5

您正在嘗試測試,如果錯誤是= No

測試的錯誤,並跳過該循環的邏輯:

Sub test() 
    Dim lastrow As Long 
    Dim i As Long 
    lastrow = Range("AB" & Rows.Count).End(xlUp).Row 
    For i = 2 To lastrow 
     If Not IsError(Range("AB" & i).Value) Then 
      If Range("AB" & i).Value = "No" Then 
       Range("S" & i).Value = "C-MEM" 
       Range("W" & i).Value = "" 
       Range("AH" & i).Value = "N/A" 
      End If 
     End If 
    Next i 
End Sub 
+0

您是說* ABi *可能是導致錯誤的公式,對嗎? – Raystafarian

+0

@Raystafarian這是我的假設的意圖。 –