2015-12-22 62 views
1

我試圖理解爲什麼我得到類型不匹配錯誤:類型不匹配VBA檢查單元格的值

這是我具備的功能,基本上它是從一個工作表複製到另一個事後刪除複製的第一個字符cells:

Sub copyBackFormulas() 

Application.ScreenUpdating = False 
Application.EnableEvents = False 

'iterate through all worksheets 
Dim WS_Count As Integer 
WS_Count = ActiveWorkbook.Worksheets.Count 
Dim I As Integer 


For I = 1 To WS_Count 
    Dim ws1 As Worksheet 
    Set ws1 = ThisWorkbook.Worksheets(I) 
    'if sheet contains evdre 
    Set d = ws1.Cells.Find("EVDRE:OK") 
    If Not d Is Nothing Then 
     'copy back all formulas except from current view 
     Dim wsTarget As Worksheet 
     Set wsTarget = ws1 
     nameHidden = ActiveSheet.Name & "_BPCOffline" 
     Sheets(nameHidden).Visible = True 
     Dim wsSource As Worksheet 
     Set wsSource = Sheets(nameHidden) 

     For Each c In wsSource.UsedRange.Cells 
      If Left(c.Value, 1) = "_" Then 
        If Left(c.Value, 7) = "_=EVCVW" Then 
        Else 
         c.Copy wsTarget.Range(c.Address) 
        End If 
      End If 
     Next 
     'Remove underscore 
     For Each c In wsTarget.UsedRange.Cells 
      If Left(c.Value, 1) = "_" Then 
       c.Formula = Right(c.Value, Len(c.Value) - 1) 
      End If 
     Next 
     wsSource.Visible = xlSheetHidden 
    End If 
    Range("A1").Select 
Next I 

Application.CutCopyMode = False 
Application.ScreenUpdating = True 
Application.EnableEvents = True 

End Sub 

我有幾張表可能需要複製。問題是,我得到了類型不匹配錯誤:If Left(c.Value, 1) = "_" Then 但是,如果我從其他工作表開始運行宏,它可以完美工作,或者只在其中一個工作表上執行正確的操作,而不是在其他工作表上執行正確的操作。 我不明白是什麼讓它在某個點上工作,什麼不是。 任何輸入的高度讚賞

編輯:我認爲這個問題是與事實是,宏可能無法找到的第一個條件If Left(c.Value, 1) = "_" Then

+0

正在評估的單元格中,這些單元格的格式如何?如果它們被格式化爲數字,它當然找不到「_」 – Luuklag

+1

也可以使用:IF NOT ...然後 – Luuklag

+0

這些單元格的內容就像這樣:'_ = EVCVW($ G $ 2,F3)',它們被格式化爲一般;正如我所說,它有時有時,有時不工作,所有的工作表都格式相同 – user3540466

回答

0

您不能複製它有一個錯誤值粘貼公式做

如果你想跳過你需要另外如果錯誤細胞......如果最終塊:

If Not Iserror(c.Value) Then 
... 
End if 

正如評論所解釋的羅裏