比较不同/单独表列中的值时,出现“类型不匹配”运行时错误

时间:2019-11-26 15:31:15

标签: excel vba runtime-error type-mismatch

基本上,我只想检查单独的表列中的两个单元格是否包含相同的字符串,如果确实包含相同的字符串,我想给另一个字符串分配一个 .Offset(,1) ,远离原始单元格。

我现在要解决几个小时。 我还尝试比较 .text 属性并使用 CStr() 进行转换,但仍然出现不匹配错误。 / p>

这是一个样本

Dim c1 As Range
Dim c2 As Range

For Each c1 In tranTab.DataBodyRange.Columns(1)
    For Each c2 In rawTab.DataBodyRange.Columns(9)
        If c2.Value = c1.Value Then
            c2.Value = c1.Offset(, 1).Value
        End If
    Next c2
Next c1

Debug突出显示以下行:

If c2.Value = c1.Value Then

并抛出:

  

“类型不匹配”运行时错误

Locals 窗口中,均显示为 Variant / Variant 类型。 这是我的第一个帖子/问题,我几乎可以肯定,我已经完成研究以找到关于不匹配问题的每条类似信息,但是在操作 tables / ListObjects 时,并没有穷尽该主题。

1 个答案:

答案 0 :(得分:4)

循环不是通过单元格,而是通过整个列。尝试此操作,并检查地址是否为该列之一:

Sub TestMe()

    Dim c1 As Range
    For Each c1 In Worksheets(1).ListObjects("tranTab").DataBodyRange.Columns(1)
        Debug.Print c1.Address
    Next c1

End Sub

为了遍历单元格,请在for-each循环末尾添加.Cells

For Each c1 In Worksheets(1).ListObjects("tranTab").DataBodyRange.Columns(1).Cells