Vba 如何从范围变量中删除重复的范围(而不是值)?
我有VBA代码,可以在Excel中的每个选定单元格中循环。我注意到,在某些情况下,选择的细胞数高于预期。例如,如果我手动选择单元格A1:A2,然后按CTRL键单击单元格A2,我希望选择的单元格计数为2。为了测试它,我运行了以下代码:Vba 如何从范围变量中删除重复的范围(而不是值)?,vba,excel,Vba,Excel,我有VBA代码,可以在Excel中的每个选定单元格中循环。我注意到,在某些情况下,选择的细胞数高于预期。例如,如果我手动选择单元格A1:A2,然后按CTRL键单击单元格A2,我希望选择的单元格计数为2。为了测试它,我运行了以下代码: Dim target As Range Set target = Application.Selection MsgBox target.Cells.Count …而细胞数实际上是三个。本例中的选择再次引用单元格A1:A2和A2 我如何将这样一个与自身重叠的范围转
Dim target As Range
Set target = Application.Selection
MsgBox target.Cells.Count
…而细胞数实际上是三个。本例中的选择再次引用单元格A1:A2和A2
我如何将这样一个与自身重叠的范围转换为一个不重叠的范围?这是一个简单的示例,但实际范围可能更大,并且包含更大的重叠范围。谢谢 此代码有效,并且已经过测试 我把target作为变量名,因为它是工作表事件变量的关键字
Option Explicit
Sub DeDupeRange()
Dim rngSelection As Range
Set rngSelection = Application.Selection
Dim rngDeDuped As Range
Dim rngLoop As Range
For Each rngLoop In rngSelection
If rngDeDuped Is Nothing Then
Set rngDeDuped = rngLoop
Else
If Intersect(rngLoop, rngDeDuped) Is Nothing Then
Set rngDeDuped = Union(rngDeDuped, rngLoop)
End If
End If
Next
Debug.Print rngSelection.Address 'result is A1:A2,A2
Debug.Print rngDeDuped.Address 'result is A1:A2
End Sub