我正在计算用户选择在操作按钮旁边的工作表顶部显示的行数,即按钮显示“生成电子邮件”,旁边显示“已选择 x 个项目”。
由于每次选择更改时都会更新,因此我有以下代码:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Sheet1.Range("E1") = Target.Rows.Count & " items selected"
End Sub
如果用户选择连续的行,例如,这可以很好地工作。 7点10分返回4。
我的问题是,如果用户选择第 7 行和第 10 行。它只会返回 1(选择的第一部分中的行)。
根据我的发现,无法从属性中获取该值,但我无法理解如何迭代选择/目标的所有部分并计算行的总和。那么用户也有可能选择 A7、C7 和 A10。 A7 和 C7 涉及同一个项目,所以这应该只被视为一个,而不是两个,我认为我的假设代码会这样做......
有没有人以前尝试过实现这一目标并取得了成功,或者可以为我指出一些可能有帮助的属性的方向?我尝试了一个单独的函数来实现它,但这也不起作用。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Sheet1.Range("E1") = getRowCount(Target) & " items selected"
End Sub
Function getRowCount(selectedRanges As Ranges)
rowCount = 0
For Each subRange In selectedRanges
rowCount = rowCount + subRange.Rows.Count
Next
getRowCount = rowCount
End Function
我认为这会起作用。 (我尝试的时候就这么做了。)
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Create a range containing just column A
Dim subRange As Range
Dim r As Range
For Each subRange In Target.Areas
If r Is Nothing Then
Set r = subRange.EntireRow.Columns(1)
Else
Set r = Union(r, subRange.EntireRow.Columns(1))
End If
Next
'Count how many cells in the combined column A range
Sheet1.Range("E1") = r.Cells.Count & " items selected"
End Sub
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)