Как я могу проверить, находится ли выбор полностью в пределах диапазона? - PullRequest
0 голосов
/ 04 сентября 2018

Итак, я обнаружил, что это похоже: VBA тест, если ячейка находится в диапазоне

но это, кажется, тестирование (насколько я понимаю), если выбранные ячейки пересекают диапазон вообще. Однако мне нужно найти способ подтвердить, является ли выбранный диапазон ПОЛНОСТЬЮ в пределах этого диапазона, чтобы я мог ограничить работу макроса только внутри указанного диапазона ячеек.

вот что я получил до сих пор .... Я называю выбранные ячейки диапазоном (sel_rng) и устанавливаю их как переменную .... затем я называю приемлемый диапазон именованным диапазоном (okay_rng) .... тогда (надеюсь .... но это та часть, которую мне до сих пор неясно, как выполнить), если "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

Мысли кого-нибудь?

1 Ответ

0 голосов
/ 04 сентября 2018

Пересечение двух диапазонов будет определять, находится ли один диапазон полностью в другом диапазоне.

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

Кстати, существует вероятность того, что пересечение может быть ничем. Для этого вы должны добавить обработку ошибок.

...