【发布时间】:2013-02-15 15:01:23
【问题描述】:
我要做的是遍历包含工作表名称的范围,如果单元格不为空,则将 CountA 函数的结果添加到计数变量。
所以计数变量应该等于我正在迭代的工作表上B9:B28 范围内非空白单元格的数量,但奇怪的是,该值等于我所在范围内非空单元格的数量正在通过 (sheet1!d5:d24)。
我做错了什么?这是我正在使用的代码:
For Each c In Worksheets("Sheet1").Range("d5:d24").Cells
If Not IsEmpty(c) Then
count = count + WorksheetFunction.CountA(c & "!b9:b28")
End If
Next
我尝试了另一种方法来遍历第二个范围,如果单元格不为空,则将变量增加 1,但这会导致 运行时错误 13 类型不匹配错误。这就是我现在正在做的事情:
For Each c In Worksheets("Sheet1").Range("d5:d24")
If Not IsEmpty(c) Then
For Each c2 In Worksheets(c).Range("b9:b28")
If Not IsEmpty(c2) Then
'count = count + WorksheetFunction.CountA(c & "!b9:b28")
count = count + 1
End If
Next
End If
Next
请帮帮我。非常感谢所有抽出时间回复的人。
【问题讨论】:
-
我认为您需要为
.CountA提供范围对象而不是字符串。试试.CountA(Worksheets(c).Range("B9:B28")) -
您使用单元格(作为范围对象)并尝试向其添加地址符号。这肯定行不通。遵循@PeterAlbert 的建议。
-
感谢大家的快速回复。我尝试了@Peter Albert 的解决方案,但它引发了类型不匹配错误。我提供了字符串,因为我认为这些函数在 VBA 中的工作方式与在 Excel 中的工作方式相同。
-
终于明白了。根据@PeterL. 的回复,我使用了
c.Value,它成功了。非常感谢大家。 -
@AmitKumarJha 将其作为您自己的答案提交,以避免社区的进一步努力。过几天你就可以接受了。