VBA -“For Each”语法-行和表内部枚举器



我不理解excel在以下方面的行为:1. 这工作得很好(cell被定义为范围对象,但实际上是一个用于循环范围的单元格:For Each cell In MyTable):

For i = 1 To Len(CompetID)
    If InStr(1, cell.Offset(0, colOff), Mid(CompetID, i, 1), vbTextCompare) > 0 Then
        cell.Interior.ColorIndex = 4
    End If
Next i

但是,这会导致InStr行出现类型不匹配错误:

For Each RowCell In HelpTable.Rows(helpRow)
    If InStr(1, RowCell, Mid(BrandID, 1, 1), vbTextCompare) > 0 Then
        cell.Interior.ColorIndex = 3
    End If
Next RowCell

RowCell是一个Range, cell也是;在"立即"窗口中仔细检查了一下。BrandID是长度为1的字符串-也检查。我使用Mid函数只是以防万一,以强制字符串。

HelpTable.Rows(helpRow)也可以正常工作。

RowCell可以是空的,但是根据MSDN,它应该在函数上返回"0"。

我也尝试使用Str(RowCell)RowCell.Value,但这导致Excel崩溃。

我显然错过了什么,但我不知道是什么。非常感谢任何帮助。

For Each RowCell In HelpTable.Rows(helpRow)每行执行一次,RowCell包含整行(在表边界内)

.Value或多cell RangeVariant/Array。不能传递给InStr

使用For Each RowCell In HelpTable.Rows(helpRow).Cells遍历行单元格

最新更新