vba - 如何对非矩形范围的列中的单元格进行计数

标签 vba excel

所以我有一个将由用户选择的范围。它将是两列,通常不相邻。我需要计算所选范围内每列中的单元格数量,以确定每列中的单元格数量是否相等。 (如果不是,我将需要调整范围。)

例如,用户可以选择 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/

相关文章:

excel - 查找列然后过滤

vba - CorelDraw VBA 宏中的暗淡工作簿无法编译

最后一行问题后的VBA粘贴数据

c# - 我可以从 ASP.NET 页面下载由内存流生成的 Excel 文件吗?

excel - 调用程序失败,但从单独的按钮运行时有效

Excel VBA/Formula 查找包含搜索词的单元格?

vba - 使用SetWindowsHookEx。在 Excel 2010 中

java - 在 jExcel API 中创建多个工作表

vba - 从 VBA 代码在数据库中插入 NULL 值

VBA:运行 "Elevated"命令(Shell 与 ShellExecute)