选择哪些细胞可以是活跃细胞

时间:2016-08-29 06:06:35

标签: excel-vba vba excel

我创建了一个简单的代码,用于将活动单元格地址放入另一个单元格中。

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

我想限制使用此代码的单元格(例如N5:AR7)但不能完全解决。 我假设我需要以某种方式使用“Dim MyRange”或类似的东西来定义范围。

有人会介意协助吗?

2 个答案:

答案 0 :(得分:0)

将代码包装成条件:

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

答案 1 :(得分:0)

Intersect()方法将返回一个Range对象,该对象表示两个或更多范围的交集。

要解释这一点,只需将下面的宏复制并粘贴到任何标准模块中即可。然后,确保活动单元格在N5:AR7内,并运行代码。它将返回活动单元格的地址。

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

如果活动单元格不在N5:AR7范围内,则会发生运行时错误

Nothing 关键字主要用于将对象变量恢复为默认值Nothing。

如果活动单元格不相交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