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