2015-09-04 213 views
0

嗨,對不起,這幾乎肯定會是一個「doh」時刻,但我沒有編碼很長一段時間,我有點生疏。Excel VBA類型不匹配引用Cell.Value

我有一個單元格的值,當我嘗試將它當作字符串處理時,我不斷收到類型不匹配,但CStr和IsNull等測試似乎沒有幫助。感謝一些建議。

Set ClientTable = SourceBook.Sheets("Source Data").Range("extdata") 
For Each rng1 In ClientTable.Columns(1).Cells 
    'if not first row (header row) and the customer name is matching the selected customer 
    If (i <> 0) And (rng1.Value = SourceBook.Sheets("Source Data").Range("C1")) Then 
     If Not IsNull(ClientTable.Columns(6).Cells.Offset(i, 0).Value) Then 
      MsgBox ClientTable.Columns(6).Cells.Offset(i, 0).Value ' type mismatch here 
     End If 
     With Sheets("Contacts").Range("A1") 
      .Offset(rowToWriteTo, 0).Value = ClientTable.Columns(6).Cells.Offset(i, 0).Value ' first name 
      .Offset(rowToWriteTo, 1).Value = ClientTable.Columns(2).Cells.Offset(i, 0).Value ' last name 
      .Offset(rowToWriteTo, 5).Value = ClientTable.Columns(3).Cells.Offset(i, 0).Value ' email 
      .Offset(rowToWriteTo, 6).Value = ClientTable.Columns(4).Cells.Offset(i, 0).Value ' DDI 
      .Offset(rowToWriteTo, 7).Value = ClientTable.Columns(7).Cells.Offset(i, 0).Value ' mobile 
      .Offset(rowToWriteTo, 8).Value = ClientTable.Columns(5).Cells.Offset(i, 0).Value ' title 
     End With 
     rowToWriteTo = rowToWriteTo + 1 

    End If 
    i = i + 1 
Next 

如果刪除該位的代碼表(「聯繫人」),範圍(「A1」)分配的所有工作的罰款。

PS:使用MsgBox只是爲了調試。試圖將ClientTable.Columns(6).Cells.Offset(i,0).Value賦值給一個字符串變量會產生相同的錯誤。

非常感謝您的幫助!

回答

4

表達式ClientTable.Columns(6).Cells.Offset(i, 0).Value產生一個值數組,因爲Columns(6)是具有多個單元格的Range對象。您不能將此數組分配給字符串。也許你應該使用ClientTable.Cells(i, 6).Value。所以你得到一個單一的價值。

+0

完美 - 謝謝你解決了它! –