使用Range()。Find()。行结果如果不是条件

时间:2017-08-10 09:31:15

标签: excel-vba vba excel

我想找到" 1"首先在A栏中提到。

Dim begin1, end1 As Integer
begin1 = 0
end1 = 0


begin1 = Range("A:A").Find("1", SearchOrder:=xlByRows, SearchDirection:=xlNext, LookIn:=xlValues).Row
end1 = Range("A:A").Find("1", SearchOrder:=xlByRows, SearchDirection:=xlPrevious, LookIn:=xlValues).Row

If Not begin1 Is Nothing Then

目前这个"如果不是"条件不起作用,因为它是错误的对象。我不太了解VBA,知道如何改变这种状况。

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:2)

试试这个。将begin1和end1声明为范围,然后检查它们是否被找到(您只需要检查前者,即使整个列中只有一个1,也会找到end1)并且它们是否使用找到的单元格的row属性

Sub x()

Dim begin1 As Range, end1 As Range

With Range("A:A")
    Set begin1 = .Find(1, after:=.Cells(.Cells.Count), SearchOrder:=xlByRows, SearchDirection:=xlNext, LookIn:=xlValues)
    Set end1 = .Find(1, after:=.Cells(1), SearchOrder:=xlByRows, SearchDirection:=xlPrevious, LookIn:=xlValues)
End With

If Not begin1 Is Nothing Then
    MsgBox "First row is " & begin1.Row
    MsgBox "Last row is " & end1.Row
End If

End Sub

答案 1 :(得分:1)

首先,请注意你在声明中如何使用逗号。

leave()

这导致begin1被声明为'variant'而end1被声明为整数。 如果您想使用逗号,则以下内容将声明为整数:

Dim begin1, end1 As Integer

然后,如果要在if ... then语句中使用整数,则应使用:

Dim begin1 as integer, end1 as integer

如果你想使用一个范围,那就是:

If begin1 <> 0 then