所以我有一个将由用户选择的范围。它将是两列,通常不相邻。我需要计算所选范围内每列中的单元格数量,以确定每列中的单元格数量是否相等。 (如果不是,我将需要调整范围。)
例如,用户可以选择 B5:B10 和 D6:D9。所以我需要代码分别返回 6 和 4。
我已经尝试过:
Set rng = Selection
rng.Columns(1).Count
这会返回 1,这显然不是我需要的数字。
提前致谢!
最佳答案
您可以使用Range
对象的Areas
方法来获取范围的面积。区域是非连续范围内的连续范围组。
Set rng = Selection
For i = 1 to rng.Areas.Count
debug.print rng.Areas(i).Cells.Count
Next
这里有一个警告您可能需要测试,即用户是否通过一次鼠标拖动选择了 A1:B10。由于这是一个连续的范围,因此它只有一个 Area
,并且您不会得到两个不同的数字。如果您需要对此进行测试,可以执行如下操作。
Set rng = Selection
'non-contiguous ranges will always return one column, if there are mutiple columns both cell counts are equal by default
If rng.Columns.Count = 1 Then
For i = 1 to rng.Areas.Count
debug.print rng.Areas(i).Cells.Count
Next
End If
关于vba - 如何对非矩形范围的列中的单元格进行计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38460466/