首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在If Not条件中使用Range().Find().Row结果

在If Not条件中使用Range().Find().Row结果
EN

Stack Overflow用户
提问于 2017-08-10 17:31:15
回答 2查看 261关注 0票数 0

我想找出A列中第一次提到"1“的那一行。

代码语言:javascript
运行
复制
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

目前,这个"If Not“条件不起作用,因为它是错误的对象。我对VBA的了解还不够多,无法知道如何改变这种情况。

任何帮助都将不胜感激!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-10 18:06:31

首先,注意在声明中使用逗号的方式。

代码语言:javascript
运行
复制
Dim begin1, end1 As Integer

这导致begin1被声明为“variant”,而end1被声明为integer。如果你想使用逗号,那么下面的代码会把它们都声明为整数:

代码语言:javascript
运行
复制
Dim begin1 as integer, end1 as integer

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

代码语言:javascript
运行
复制
If begin1 <> 0 then

如果你想使用一个范围,它应该是:

代码语言:javascript
运行
复制
if Not begin1 is nothing then
票数 1
EN

Stack Overflow用户

发布于 2017-08-10 17:39:30

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

代码语言:javascript
运行
复制
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
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45609739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档