San*_*osh 6 excel vba excel-vba
在下面的代码中rngIntersect.Address返回A10.有没有办法在哪里可以得到除交叉点之外的所有范围而没有循环?
谢谢
Sub NotIntersect()
Dim rng As Range, rngVal As Range, rngIntersect As Range
Set rng = Range("A1:A10")
Set rngVal = Range("A10")
Set rngIntersect = Intersect(rng, rngVal)
MsgBox rngIntersect.Address
End Sub
Run Code Online (Sandbox Code Playgroud)
我已将这个问题发布到 msdn 论坛,但没有得到 SO 的回应,并得到了所需的解决方案。我已经测试了代码并且运行良好。我希望它有帮助。
这是msdn 上的帖子链接。
Sub NotIntersect()
Dim rng As Range, rngVal As Range, rngDiff As Range
Set rng = Range("A1:A10")
Set rngVal = Range("A5")
Set rngDiff = Difference(rng, rngVal)
MsgBox rngDiff.Address
End Sub
Function Difference(Range1 As Range, Range2 As Range) As Range
Dim rngUnion As Range
Dim rngIntersect As Range
Dim varFormulas As Variant
If Range1 Is Nothing Then
Set Difference = Range2
ElseIf Range2 Is Nothing Then
Set Difference = Range1
ElseIf Range1 Is Nothing And Range2 Is Nothing Then
Set Difference = Nothing
Else
Set rngUnion = Union(Range1, Range2)
Set rngIntersect = Intersect(Range1, Range2)
If rngIntersect Is Nothing Then
Set Difference = rngUnion 'Updated "Different" to "Difference"
Else
varFormulas = rngUnion.Formula
rngUnion.Value = 0
rngIntersect.ClearContents
Set Difference = rngUnion.SpecialCells(xlCellTypeConstants)
rngUnion.Formula = varFormulas
End If
End If
End Function
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6039 次 |
| 最近记录: |