我想找到" 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,知道如何改变这种状况。
非常感谢任何帮助!
答案 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