vba find 查找时间为什么我用find时报错

查看: 1233|回复: 7
如何才能用FIND进行精确查找不报错
阅读权限20
在线时间 小时
(13.59 KB, 下载次数: 9)
17:18 上传
点击文件名下载附件
需要在H列中查找Cells(bb, 4)格元格里的值,返回目标所在的行号.
为什么没有找到时就会报"运行错误"91",对像变量或"WITH块变量未设置.
vbq = Range(&h:h&).Find(Cells(bb, 4), LookAt:=xlWhole).Row
阅读权限50
在线时间 小时
没有找到报错是正常的
阅读权限50
在线时间 小时
可以加句代码,出错时退出程序
阅读权限50
在线时间 小时
出错时继续进行下一个循环
17:29 上传
点击文件名下载附件
13.12 KB, 下载次数: 12
阅读权限95
在线时间 小时
If Application.CountIf(Range(&h:h&), Cells(bb, 4)) & 0 Then&&'加个判断
(13.79 KB, 下载次数: 14)
17:46 上传
点击文件名下载附件
阅读权限95
在线时间 小时
If&&not Range(&h:h&).Find(Cells(bb, 4), LookAt:=xlWhole) is nothing then
vbq = Range(&h:h&).Find(Cells(bb, 4), LookAt:=xlWhole).Row
阅读权限50
在线时间 小时
报错是因为Range(&h:h&).Find(Cells(bb, 4), LookAt:=xlWhole)不存在,即在range(&h:h&)中未找到cells(bb,4),这种情况一般加个判断:
if not Range(&h:h&).Find(Cells(bb, 4), LookAt:=xlWhole) is nothing then vbq = Range(&h:h&).Find(Cells(bb, 4), LookAt:=xlWhole).Row
阅读权限20
在线时间 小时
::D :loveliness:谢谢几位大哥的帮助,问题解决了.::D
玩命加载中,请稍候
玩命加载中,请稍候
Powered by
本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任! & & 本站特聘法律顾问:徐怀玉律师 李志群律师查看: 8496|回复: 8
vba find函数 出错
阅读权限20
在线时间 小时
Set c = Sheets(1).Cells.Find(&工号&)
Cells(3, 3) = c.Row
很简单的一段代码,但是就出错了。不知道find函数要怎么写。
提示是说:对象变量或with块变量未设置。原因是应该找不到这个单元格。
15:04 上传
点击文件名下载附件
6.88 KB, 下载次数: 65
阅读权限95
在线时间 小时
Set c = Sheets(1).Cells.Find(&工号&)
if not c is nothing then
& & Cells(3, 3) = c.Row
& & msgbox &没找到&
阅读权限20
在线时间 小时
这个我知道啊,但是问题是明明里面就包含了要找的东西啊,只是vba找不出来而已。而且更奇怪的是在第一列之前再插入一列的话程序就可以运行了
阅读权限95
在线时间 小时
FIND函数是查找一个字符或数字在一串字符中或数字中的位置,楼主这样的用法没有见过。应该查找某一个单元格是否含有这样的内容,不应用函数
阅读权限95
在线时间 小时
& & & & & & & &
Set c = Sheets(1).Cells.Find(&工号&,after:=[iv65536])
Cells(3, 3) = c.Row
阅读权限20
在线时间 小时
5楼的方法可以运行了,谢谢。
不过具体原理还不了解,如果可以补上就更好了,不过我自己也会去查查看。
阅读权限20
在线时间 小时
难道加了after:=[iv65536】就等于查找全部的意思?
阅读权限95
在线时间 小时
原帖由 kimi86 于
15:39 发表
难道加了after:=[iv65536】就等于查找全部的意思?
正常查找应该从A1开始,加了After:=[iv65536]就是从最后一个单元格的下一个开始,当然还是A1。
我想这是Excel的一个BUG,因为如果取消了A1:A2的合并,查找就没有问题。
我也是试出来的,道理讲不清。
阅读权限10
在线时间 小时
写好的查找和分列的代码不给运行
本来写这段小代码是为了删除azk格式下表头中的一些内容(以“subject 1&开头的那一段之前的内容全删掉,包括那一段),然后以空格为分隔符来分列。是找同学给写的,因为我对这些完全不懂,当时运行的挺好,想要的都能实现,但现在再运行的话,就不给进行删除和分列的步骤了,只是简单的用excel打开了原来的azk文件而已,崩溃啦,同学现在不在,我又着急用,还看不懂,麻烦大伙给帮个忙,看一眼是少了什么东西吗?谢谢了~
14:39 上传
点击文件名下载附件
9.03 KB, 下载次数: 4
玩命加载中,请稍候
玩命加载中,请稍候
Powered by
本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任! & & 本站特聘法律顾问:徐怀玉律师 李志群律师VBA 一个find方法的增强函数
时间: 14:33:20
&&&& 阅读:260
&&&& 评论:
&&&& 收藏:0
标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&
‘本函数是一个find方法的增强函数,结合FindNext和FindPrevious方法,可以返回一组符合条件的单元格的集合;
‘本函数返回一个Collection对象,里面储存了找到的单元格;
‘本函数有两个必选参数:
1.SearchRange 用来存放需要查找的区域;
2.FindWhat用来存放需要查找的值;
‘其余参数都是可选参数,与Find方法参数相同;
‘无论是否查找到单元格,都会返回一个collection对象;
‘我们用Collection.Count=0,来判断,没有找到匹配的单元格;
Option Explicit
Function FindPlus(SearchRange As Range, FindWhat As Variant, _
Optional After As Range, _
Optional LookIn As Variant = xlFormulas, _
Optional LookAt As Variant = xlPart, _
Optional SearchOrder As Variant = xlByRows, _
Optional SearchDirection As Variant = xlNext, _
Optional MatchCase As Variant = False, _
Optional MatchByte As Variant = True, _
Optional SearchFormat As Variant = False) As Collection
Dim FoundCell As Range ‘存放找到的单元格区域;
Dim AfterCell As Range ‘存放查找的起始单元格;
Dim FoundCol As Collection ‘存放找到单元格区域的集合;
Dim firstAddress As String ‘存放第一次找到的单元格的地址
Set FoundCol = New Collection ‘Collecion类实例化为对象
‘下面这个判断语句完成对After参数值的控制
If After Is Nothing Then
Set AfterCell = After ‘如果after参数不为空,这用提供的after参数值
‘查找第一个符合条件的值
Set FoundCell = SearchRange.Find(what:=FindWhat, After:=AfterCell, _
LookIn:=LookIn, _
LookAt:=LookAt, _
SearchOrder:=SearchOrder, _
SearchDirection:=SearchDirection, _
MatchCase:=MatchCase, _
MatchByte:=MatchByte, _
SearchFormat:=SearchFormat)
If Not FoundCell Is Nothing Then
firstAddress = FoundCell.Address ‘如果找到第一个值,然后把单元格地址赋值给FirstAddress变量
‘下面的循环是在区域里不断查找需要的值,并不断添加到FoundCol集合
FoundCol.Add FoundCell ‘把找到的单元格赋值给FoundCol对象
‘根据SearchDirection参数,判断是向上搜索,还是向下搜索
If SearchDirection = xlNext Then
Set FoundCell = SearchRange.FindNext(After:=FoundCell)
Set FoundCell = SearchRange.FindPrevious(After:=FoundCell)
Loop Until (FoundCell Is Nothing) Or (FoundCell.Address = firstAddress) ‘经典用法,只要找到单元格和第一个找到的单元格地址不一样,就一直循环
Set FindPlus = FoundCol ‘把集合对象赋值给函数名
End Function
&标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&原文:http://www.cnblogs.com/yuzhengdong/p/4199429.html
教程昨日排行
&&国之画&&&& &&&&&&
&& &&&&&&&&&&&&&&
鲁ICP备号-4
打开技术之扣,分享程序人生!查看: 5384|回复: 12
selection.find怎么用到函数中就出错了?
阅读权限20
在线时间 小时
Private Sub cb_save_Click()&&& Dim a(10)Dim pt As String, pm As String, gg As String, unitp As StringDim qt As Long, unit_p As Long, lien As Integerj = 9&a(1) = Cells(6, 4) 'pn&a(2) = Cells(5, 6) 'provider& Do While Cells(j, 2) && ""&&&&& pt = Trim(Cells(j, 2))&&&&& lien = getfind(a(1), pt)&&&&&& j = j + 1& LoopEnd SubPublic Function getfind(aspo, aspn) As Integer&&&& Dim w As Worksheet&&&& Dim i_len As Integer, i_lenpn As Integer&&&&&&&& Workbooks("收货记录.xls").Worksheets("8月订单").Activate&&&&&& Set w = Workbooks("收货记录.xls").Worksheets("8月订单")&&&&&& &&&&&& 'Rows("2:2").Select&&&&& w.Columns("B:B").Select&&&&&&& 'Columns("B:B").Select&&&&& ' w.Range("B2").Activate&&& i_len = Selection.Find(What:=aspo, After:=ActiveCell, LookIn:=xlFormulas, _&&&&&&& LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _&&&&&&& MatchCase:=False, MatchByte:=False, SearchFormat:=False).Row.......End Function如果把getfind函数体放入do while中就没有问题,可是要引用getfind时像上面就会出现"运行错误'91':对象变量或With块变量未设置"的提示,望高手指点,谢谢!!
[此贴子已经被作者于 9:29:31编辑过]
阅读权限70
在线时间 小时
加一句If Not X Is Nothing Then
阅读权限20
在线时间 小时
我是在i_len=...这一句才出现的错误,楼上的你说的加一句在set w= 之后还是出错呀,一样的报错
[此贴子已经被作者于 9:25:17编辑过]
阅读权限70
在线时间 小时
发个附件上来看一看吧。
阅读权限20
在线时间 小时
我的主体在一个sheet1表中操作就是把sheet1中数据放入到8月订单.xls中,先找到相应的行,可是出当我调用函数时就出错了
阅读权限20
在线时间 小时
清风版主在不?出来看一下这是为什么?急,谢谢了
阅读权限50
在线时间 小时
急死你,发个附件就那么难?有了附件别人也好调试代码,也好尽快的回复你嘛!试:改 w.Columns("B:B").Select&&&i_len = Selection.Find(What:=aspo, After:=ActiveCell, LookIn:=xlFormulas, _&&&&&&& LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _&&&&&&& MatchCase:=False, MatchByte:=False, SearchFormat:=False).Row为&& i_len = w.Columns("B:B").Find(What:=aspo, After:=ActiveCell, LookIn:=xlFormulas, _&&&&&&& LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _&&&&&&& MatchCase:=False, MatchByte:=False, SearchFormat:=False).Row
阅读权限20
在线时间 小时
老兄,我上传了,可还看不到,对了pw:yj750412,上面的我也试过了没用,还是这个错误
阅读权限20
在线时间 小时
怎么还没见到附件,我是点了上传了呀
阅读权限70
在线时间 小时
& & & & & & & &
这种东东的出现应与selection有关!可以的话就不要用select直接在主程序设一个 set range=XXXX,并带进函数中个人以为你现在的做法既要两个工作表中转来转去一定有很多细节不能兼顾到的也会对速度有很大的影响
[此贴子已经被作者于 11:38:12编辑过]
玩命加载中,请稍候
玩命加载中,请稍候
Powered by
本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任! & & 本站特聘法律顾问:徐怀玉律师 李志群律师没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!}

我要回帖

更多关于 vba 运行时错误1004 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信