所以我发现了类似的东西:VBA test if cell is in a range
但这似乎是测试(据我所知),如果选择的单元格与该范围相交。但是,我需要找到一种方法来确认所选范围是否完全在该范围内,以便我可以将宏限制为仅在指定范围的单元格内工作。
这是我到目前为止所做的....我将所选单元格命名为范围(sel_rng)并将它们设置为变量....然后我将可接受范围命名为命名范围(okay_rng)... .then(希望......但这是我仍然不清楚如何拉开的部分)如果“sel_rng”完全位于“okay_rng”中我想抓住“sel_rng”并合并它,否则会抛出一个错误“
Sub Merge_Cells()
'
' Merge_Cells Macro
Dim selcells As Range
Selection.Name = "sel_rng"
selcells = Range("sel_rng")
Dim okayrng As Integer
okayrng = Range("itemrows").Value + 28
ActiveSheet.Range("C29:C" & okayrng).Select
Selection.Name = "okay_rng"
Range("sel_rng").Select
Selection.Merge
想什么?
两个范围的交点将确定一个范围是否完全在另一个范围内。
dim rng1 as range, rng2 as range
set rng1 = range("b2:c3")
set rng2 = range("a1:d4")
'if rng1 is completely within rng2, the intersection's address will be the same as rng1's address
if application.intersect(rng1, rng2).address = rng1.address then
debug.print rng1.address(0, 0) & " is within " & rng2.address(0, 0)
end if
顺便说一句,交叉点可能没有任何意义。您应该为此添加错误处理。