2016-08-29 3 views
2

Я создал простой код для размещения активного адреса ячейки в другой ячейке.Выбор ячеек, которые могут быть активными ячейками

`Sheets("ESM").Range("K16").Value = ActiveCell.Address` 

Я хотел бы ограничить клетки, которые работают с этим кодом (например N5: AR7), но не вполне может работать это. Я предполагаю, что мне нужно как-то определить диапазон, используя что-то вроде «Dim MyRange» или подобное.

Может кто-нибудь помочь?

ответ

0

Просто обернуть свой код в состояние:

If Not Intersect(ActiveCell, Range("N5:AR7")) Is Nothing Then 
    Sheets("ESM").Range("K16").Value = ActiveCell.Address 
End If 
+0

Спасибо JulianYour работал отлично – KennyG1968

+0

Ума маркировка мой ответ, как правильно ? –

0

Метод Intersect() возвращает Range объект, представляющий пересечение двух или более, диапазоны.

Чтобы это объяснить, просто скопируйте и вставьте макрос ниже в любой стандартный модуль. Затем убедитесь, что активная ячейка находится в пределах N5:AR7 и запустите код. Он вернет адрес активной ячейки.

Sub TryMe() 
    MsgBox Intersect(ActiveCell, Range("N5:AR7")).Address 
End Sub 

Если активная ячейка не находится в пределах N5:AR7 Заурядный Время Ошибка происходит.

Ничего Ключевое слово в основном используется для очистки переменной объекта назад, используемый по умолчанию ничего.

мы можем использовать код, как показано ниже, чтобы предотвратить ошибку Run Time мы получаем, когда/если активная ячейка не Intersect N5:AR7:

Sub TryMeAgain() 
    If Intersect(ActiveCell, Range("N5:AR7")) Is Nothing Then 
     MsgBox "The active cell does NOT Intersect A1:A10" 
    Else 
     MsgBox "The active cell does Intersect A1:A10" 
    End If 
End Sub 
Смежные вопросы