基本上,我只想检查单独的表列中的两个单元格是否包含相同的字符串,如果确实包含相同的字符串,我想给另一个字符串分配一个 .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 时,并没有穷尽该主题。
答案 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