Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 如何计算非矩形区域列中的单元格数_Vba_Excel - Fatal编程技术网

Vba 如何计算非矩形区域列中的单元格数

Vba 如何计算非矩形区域列中的单元格数,vba,excel,Vba,Excel,因此,我有一个范围,将由用户选择。它将是两列,通常不相邻。我需要计算选定范围内每列中的单元格数量,以确定每列中的单元格数量是否相等。(如果不是,我需要调整范围。) 例如,用户可以选择B5:B10和D6:D9。所以我需要代码分别返回6和4 我试过: Set rng = Selection rng.Columns(1).Count 这返回1,这显然不是我需要的数字 提前谢谢 您可以使用范围对象的区域方法来获取范围的区域。区域是非连续范围内连续范围的组 Set rng = Selection For

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

例如,用户可以选择B5:B10和D6:D9。所以我需要代码分别返回6和4

我试过:

Set rng = Selection
rng.Columns(1).Count
这返回1,这显然不是我需要的数字


提前谢谢

您可以使用
范围
对象的
区域
方法来获取范围的区域。区域是非连续范围内连续范围的组

Set rng = Selection
For i = 1 to rng.Areas.Count
    debug.print rng.Areas(i).Cells.Count
Next
这里有一个警告,您可能需要测试,也就是说,如果用户通过一次鼠标拖动选择A1:B10。因为这是一个连续的范围,所以它只有一个
区域
,并且不会得到两个不同的数字。如果您需要对此进行测试,您可以执行以下操作

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

该死的斯科特,快把我打败了

虽然我使用的是
Rows
属性-如果用户选择
A1:B19
它将在数组的单个元素中返回19,如果他们选择
A1:A19
然后选择
B1:B19
它将在数组的两个元素中返回19。
使用
单元格
它将在单个元素中返回38,或在两个元素中返回19

Sub Test()

    Dim rRange As Range
    Dim lRows() As Long
    Dim x As Long

    Set rRange = Selection

    With rRange
        ReDim lRows(1 To .Areas.Count)
        For x = 1 To .Areas.Count
            lRows(x) = .Areas(x).Rows.Count
        Next x
    End With

End Sub

您是否还需要检查他们总共只选择了两列,还是只需要每个区域中的单元格数相同?i、 e.如果他们选择A1:C2和D1:E3,则电池数量相同,但形状不同。谢谢!这正是我需要的。