簡體   English   中英

VBA運行時錯誤13類型不匹配,如果聲明

[英]VBA runtime error 13 Type Mismatch If statment

我收到運行時錯誤'13':嘗試運行代碼時鍵入不匹配。 調試突出顯示了“ IF”語句,但我無法弄清楚錯誤在哪里。 任何幫助,將不勝感激。 謝謝

  Dim i As Integer
  Dim lastRow As Long
  Workbooks("Template Part_II.xlsx").Worksheets(2).Activate
 lastRow = Cells(Rows.Count, 1).End(xlUp).Row
 For i = 2 To lastRow
     If Cells(i, 1).Value <> "#N/A" And Cells(i, 1).Value <> "00000000-000" Then
        Cells(i, 1).Copy
        Worksheets(1).Range("A2:A" & lastRow).PasteSpecial xlPasteValues
     End If
 Next I

實際上,我正在嘗試這樣做:
我有一張工作表,其中有100行各種ID,並且我想將此ID復制到另一張工作表而沒有可能的非ID字符串,在這種情況下,它可以是#N / A或00000000-0000,我也不想那些復制的單元格在目標范圍內顯示為空白。

像這樣將您對單元格的訪問包裝在檢查中,以確保該單元格不包含錯誤值(例如,單元格“包含”被0除)

 ...
 For i = 2 To lastRow
     If Not IsError(Cells(i, 1).Value) Then
        If Cells(i, 1).Value <> "#N/A" And Cells(i, 1).Value <> "00000000-000" Then
           Cells(i, 1).Copy
           Worksheets(1).Range("A2:A" & lastRow).PasteSpecial xlPasteValues
        End If
     End If
 Next i
 ...  

注意:我試圖將條件插入到現有If的前面,但似乎VBA並未使用短路,因此包裝


由於評論而更新

您可能想要像這樣更改代碼

Dim i As Integer
Dim lastRow As Long
Dim targetRow As Long

Workbooks("Template Part_II.xlsx").Worksheets(2).Activate
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
targetRow = 2
For i = 2 To lastRow
   If Not IsError(Cells(i, 1).Value) Then
       If Cells(i, 1).Value <> "#N/A" And Cells(i, 1).Value <> "00000000-000" Then
          Cells(i, 1).Copy
          Worksheets(1).Cells(targetRow, 1).PasteSpecial xlPasteValues
          targetRow = targetRow + 1
       End If
   End If
Next i

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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