【发布时间】:2020-02-02 19:12:11
【问题描述】:
这个让我发疯。
我想检查一个单元格的值是否为“是”,但不管我怎么做,VBA 一直说类型不匹配。
真的可以在这里使用一些帮助。
这是我的代码:
Dim rowcntr As Variant
Dim rowcntr2 As Variant
Dim i As Integer
For i = 1 To rowcntr
rowcntr2 = WorksheetFunction.CountA(Sheet3.Range("A:A"))
If sheet10.Range("R1").Offset(i, 14).Find("Yes", sheet10.Range("R1"), xlValues, xlWhole, xlByColumns, xlNext, True) Is Nothing Then
i = i + 1
Else
Sheet3.Range("A1").Offset(rowcntr2, 0) = sheet10.Range("R1").Offset(i, 0)
Sheet3.Range("A1").Offset(rowcntr2, 1) = sheet10.Range("R1").Offset(i, 1)
Sheet3.Range("A1").Offset(rowcntr2, 2) = sheet10.Range("R1").Offset(i, 2)
Sheet3.Range("A1").Offset(rowcntr2, 3) = sheet10.Range("R1").Offset(i, 3)
Sheet3.Range("A1").Offset(rowcntr2, 4) = sheet10.Range("R1").Offset(i, 5)
End If
Next i
【问题讨论】:
-
你能解释一下你到底想做什么吗?一个危险信号 - 您正在使用
i = i + 1在循环内修改i。也不确定您是否需要Range.Find。 -
另外,
rowcntr没有分配给它的值。 -
看起来你使用它们的方式,
rowcntr和rowcntr2也应该是Long。 -
哪一行会报错?那个
rowcntr行? (这应该在您的问题中,而不是在 cmets 中)。 -
您可以使用过滤器而不是逐行循环。从您的解释看来,您根本不需要
Find。