我想循环遍历范围内的所有单元格。
Dim rngTop, rngAll as Excel.Range
'Set a cell
rngTop = DirectCast(_sheet.Cells(1, 2), Excel.Range)
'Set a range from the Top cell to its last cell in the cells column
rngAll = rngTop.End(Excel.XlDirection.xlDown)
For Each cell As Excel.Range In rngAll
If cell.Value2 = "x" Then
'Do stuff
End If
Next
cell.Value
带下划线并给出了compil错误,即cell.value2是一个对象,我不能在其上使用运算符(在本例中为=)。谁能帮助我完成这项任务? Value2
不应该是一个对象。
我也尝试过:
Dim cell As Excel.Range = Nothing
Dim i As Integer
For i = 1 To rngAll.Rows.Count
If DirectCast(rngAll.Cells(i, 5), Excel.Range).Value2 = "x" Then
'Do stuff
End If
next i
但遇到与上述相同的问题。
答案 0 :(得分:1)
我想我有解决方案。这里的问题是vb不知道value2将传递什么类型,因此它提供了一个对象。这就是代码提供无法应用= -Operator的消息的原因。使用
If CStr(cell.value2) = "x" then
...
完美无缺。因此,最好的方法是编写一个函数来检查每种可能类型的valuetype并进行转换。