Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 14023|回复: 19

[已解决]find函数“运行时错误:'91':对象变量或 With 块变量未设置”

[复制链接]
发表于 2014-1-13 21:06 | 显示全部楼层 |阅读模式
本帖最后由 tongxon 于 2014-1-13 21:48 编辑

如图1所示,需要在文件1的“薄片鉴定”一列中查找有“√”的行号,然后在该行的c列查找出它的钻孔编号,比如图1所示第一个做薄片鉴定的钻孔编号为Jz-Ⅱ133-137040,最后需要在图片2中文件2的B列中查找前面所找出的钻孔编号所在行,并在该行AL列(“薄片鉴定列”)备注出“薄片”,例如,Jz-Ⅱ133-137040在图片2中的B列23行,在23行AL列备注出“薄片”,我编写的代码如下:
Sub 自动在勘探总表中备注()
Dim m, m1, m2, x, k, wh, wb
Set wh = ThisWorkbook.Sheets("岩样单")
Set wb = Workbooks.Open(ThisWorkbook.Path & "/4-衢宁初测2测段钻孔信息一览表01.03戴核.xlsx")
wh.Activate
For m = 7 To wh.Range("o65536").End(xlUp).Row
If Range("o" & m) = "√" Then
m1 = [c:c].Find("Jz-*", After:=Range("c" & m), searchdirection:=xlPrevious).Row
m2 = wb.Sheets(1).[b:b].Find(Range("c" & m1)).Row
wb.Sheets(1).Range("al" & m2) = "薄片"
k = k + 1
End If
Next m
MsgBox "共有" & k & "个数据"
End Sub
运行后提示“运行时错误:'91':对象变量或 With 块变量未设置”(图片3)。
我逐步运行后发现,图片1中从上到下第一个薄片鉴定的钻孔编号Jz-Ⅱ133-137040在图片2中可以正确标注(图片4),第二个薄片鉴定的钻孔编号Jz-Ⅱ133-126917在图片2中程序运行到 m2 = wb.Sheets(1).[b:b].Find(Range("c" & m1)).Row 语句就会提示错误。
我百思不得其解,求大神指教~~
最佳答案
2014-1-13 22:39
  1. Sub 自动在勘探总表中备注()
  2.     Dim m, m1, m2, x, k, wh, wb
  3.     Set wh = ThisWorkbook.Sheets("岩样单")
  4.     Set wb = Workbooks.Open(ThisWorkbook.Path & "/4-衢宁初测2测段钻孔信息一览表01.03戴核.xlsx")
  5.     wh.Activate
  6.     For m = 7 To wh.Range("o65536").End(xlUp).Row
  7.         If Range("o" & m) = "√" Then
  8.             If Not [c:c].Find("Jz-*", After:=Range("c" & m), searchdirection:=xlPrevious) Is Nothing Then
  9.                 m1 = [c:c].Find("Jz-*", After:=Range("c" & m), searchdirection:=xlPrevious).Row
  10.                 If Not wb.Sheets(1).[b:b].Find(Range("c" & m1)) Is Nothing Then
  11.                     m2 = wb.Sheets(1).[b:b].Find(Range("c" & m1)).Row
  12.                     wb.Sheets(1).Range("al" & m2) = "薄片"
  13.                     k = k + 1
  14.                 End If
  15.             End If
  16.         End If

  17.         'm2 = wb.Sheets(1).[b:b].Find(Range("c" & m1)).Row
  18.         'wb.Sheets(1).Range("al" & m2) = "薄片"
  19.         'k = k + 1
  20.         'End If
  21.     Next m
  22.     MsgBox "共有" & k & "个数据"
  23. End Sub
复制代码

图片1

图片1

图片2

图片2

图片3

图片3

图片4

图片4

附件.zip

54.14 KB, 下载次数: 7

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2014-1-13 21:14 | 显示全部楼层
代码难了,看不懂,可以帮顶一下,大家都看见,俺也等着看答案
回复

使用道具 举报

发表于 2014-1-13 21:20 | 显示全部楼层
[c:c].Find("Jz-*", After:=Range("c" & m), searchdirection:=xlPrevious)
说明查找不到符合条件的单元格嘛。
你返回row肯定就会报错了。
回复

使用道具 举报

 楼主| 发表于 2014-1-13 21:20 | 显示全部楼层
tgydslr 发表于 2014-1-13 21:14
代码难了,看不懂,可以帮顶一下,大家都看见,俺也等着看答案

谢谢哈,这个问题困扰我很久了~~
回复

使用道具 举报

 楼主| 发表于 2014-1-13 21:21 | 显示全部楼层
hwc2ycy 发表于 2014-1-13 21:20
[c:c].Find("Jz-*", After:=Range("c" & m), searchdirection:=xlPrevious)
说明查找不到符合条件的单元格 ...

肯定是可以查找到的哈,图2是总表~~
回复

使用道具 举报

发表于 2014-1-13 21:35 | 显示全部楼层
呵呵,最好传个附件吧,这样方便大家调试。
回复

使用道具 举报

发表于 2014-1-13 21:36 | 显示全部楼层
很简单,你在搜索的那一行
直接
dim rg as range
set rg=[c:c].Find("Jz-*", After:=Range("c" & m), searchdirection:=xlPrevious)
stop
看看rg是Nothing还是啥
回复

使用道具 举报

 楼主| 发表于 2014-1-13 21:37 | 显示全部楼层
hwc2ycy 发表于 2014-1-13 21:35
呵呵,最好传个附件吧,这样方便大家调试。

好,我把附近传上来,求版主解答!
回复

使用道具 举报

 楼主| 发表于 2014-1-13 21:38 | 显示全部楼层
hwc2ycy 发表于 2014-1-13 21:36
很简单,你在搜索的那一行
直接
dim rg as range

m1是没有问题的,在m2的代码提示错误,我逐句运行过~~
回复

使用道具 举报

发表于 2014-1-13 21:40 | 显示全部楼层
tongxon 发表于 2014-1-13 21:38
m1是没有问题的,在m2的代码提示错误,我逐句运行过~~

你都知道问题在M2了,还不赶紧解决。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-3-29 03:46 , Processed in 0.722636 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表