使用activecell在vba中键入不匹配错误

时间:2015-07-11 07:08:08

标签: vba excel-vba excel

我收到类型不匹配的错误。我正在尝试设置等于某个单元格的活动单元格。如果activecell = E4:E18 ,那么在这里执行此操作是我的代码,任何人都可以告诉我我在这里做错了什么。

        If ActiveCell.Row = Range(Cells(4, 5), Cells(18, 5)) Then
              ActiveSheet.Cells(ActiveCell.Row, 4) = Now
        If ActiveCell.Row = Range(Cells(4, 8), Cells(18, 8)) Then
              ActiveSheet.Cells(ActiveCell.Row, 7) = Now

我正在尝试设置有效的 cell = E4 to E18 然后这个 '

1 个答案:

答案 0 :(得分:1)

您正在尝试将数字ActiveCell.RowRange方法返回的范围对象进行比较。你需要使用它:

If ActiveCell.Row = Range(Cells(4, 5), Cells(18, 5)).Row Then

但是,这不符合您的要求。 ActiveCell只是一个单元格,因此Row属性只是一个数字。 Selection范围可以超过单个单元格。但是,Row属性仍然只返回第一行单元格的行号。

如果您要检查ActiveCell是否在E4:E18范围内,请使用Intersect方法查看是否返回范围对象:

If Not (Intersect(ActiveCell, Range(Cells(4, 5), Cells(18, 5))) Is Nothing) Then
    MsgBox "Yes"
Else
    MsgBox "No"
End If

如果您只关心行号,请使用

If (ActiveCell.Row >= 4 And ActiveCell.Row <= 18) Then
    MsgBox "Yes"
Else
    MsgBox "No"
End If