2014-09-16 2 views
2

Я знаю, что многие люди говорили о полных квалификационных диапазонах. Я просто хочу знать, как глубоко вам нужно идти, чтобы избежать проблем.Excel Полностью квалификационный диапазон (ячейки(), ячейки())

В этом примере я получил свой рабочий лист, используя переменную размера. Должно ли это быть на 100% надежным, чтобы дополнительно квалифицироваться в круглых скобках диапазона?

dim myWS as Worksheet 
set myWS = Thisworkbook.Activesheet 

- Использовать метод A?

myWS.Range(Cells(1,5), Cells(500,20)).ClearContents 

- Или метод B?

myWS.Range(myWS.Cells(1,5), myWS.Cells(500,20)).ClearContents 

ли «клетка» внутри скобок Диапазона по умолчанию для ссылки myWS.Range, в котором он был назван или же «клетка» по умолчанию для ссылки на активный листе?

Если myWS был установлен на лист, отличный от активного листа, я получаю неожиданные результаты от Cells?

Это не сложно, за исключением того, что мне придется вернуться и изменить его во многих местах, если вы скажете, что второй способ более заслуживает доверия!

+1

В 'Cells' объекты ссылки на активный лист. Если 'myWS' не активен, когда эта строка будет выполнена, VBA выдаст ошибку. – Kapol

+0

Я не уверен, но вы можете легко протестировать его, myWS.range (myAnotherWS.cell, someOtherWs.cell) –

+1

'Метод B' - это правильный путь –

ответ

2

Метод A будет работать только в том случае, если вы myWS активны во время вызова. Метод B является более надежной, так же как и метод С:

myWS.Range(Cells(1,5).Address, Cells(500,20).Address).ClearContents 

или метод D:

myWS.Range("E1:T500") 
+0

Хм .. C интересен. Я буду экспериментировать с ним. D не подходит для меня, потому что у меня всегда будет переменная строка/столбец. Примером было упрощение. Похоже, что B - это, вероятно, путь. –

Смежные вопросы