ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 125|回复: 9

[求助] 查找时出错

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-9-20 12:18 | 显示全部楼层 |阅读模式
大神们,
      求助,我设计了一个查找工具,如果单元格中出现#REF!、#VALUE! 、#NAME?等错误提示,VBA运行时将出现类型不匹配的提示。加上On Error Resume Next,虽然可以继续运行,但查找的结果不准确,把出现错误提示的工作表视为找到。我要求:对出错单元格不做任何修改,得出正确查找结果。其实就是在查找到出现错误提示单元格时,怎么跳过去。

查找工具.rar

22.67 KB, 下载次数: 9

TA的精华主题

TA的得分主题

发表于 2024-9-20 12:33 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

改为报错GoTo跳转就行了
image.png

TA的精华主题

TA的得分主题

发表于 2024-9-20 12:38 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
把   Sheets(gzb).UsedRange   改成    Sheets(gzb).Range("b2", Cells(Rows.Count, 2).End(xlUp))

TA的精华主题

TA的得分主题

发表于 2024-9-20 12:46 | 显示全部楼层
加个错误判断If IsError(arr(i, 3)) = False Then

查找工具.zip

23.23 KB, 下载次数: 6

TA的精华主题

TA的得分主题

发表于 2024-9-20 12:47 | 显示全部楼层
新写一个吧。

  1. Sub ykcbf()   '//2024.9.20
  2.     Application.ScreenUpdating = False
  3.     Set sh = ThisWorkbook.Sheets("控制台")
  4.     st = sh.[a2].value
  5.     ReDim brr(1 To 1000, 1 To 2)
  6.     For Each sht In Sheets
  7.         If sht.Name <> sh.Name Then
  8.             With sht
  9.                 arr = .UsedRange
  10.                 For i = 2 To UBound(arr)
  11.                     If IsError(arr(i, 3)) = False Then
  12.                         If arr(i, 2) = st Then
  13.                             m = m + 1
  14.                             brr(m, 1) = .Name
  15.                             brr(m, 2) = "是"
  16.                             Exit For
  17.                         End If
  18.                     End If
  19.                 Next
  20.             End With
  21.         End If
  22.     Next
  23.     With sh
  24.         .[b2:c1000] = ""
  25.         .[b2].Resize(m, 2) = brr
  26.     End With
  27.     Application.ScreenUpdating = True
  28.     MsgBox "OK!"
  29. End Sub
复制代码


TA的精华主题

TA的得分主题

发表于 2024-9-20 12:56 | 显示全部楼层
本帖最后由 quqiyuan 于 2024-9-20 12:57 编辑

改用find函数,稍作改动。仅供参考。。。
image.png
image.png

查找工具.zip

21.65 KB, 下载次数: 4

TA的精华主题

TA的得分主题

发表于 2024-9-20 12:59 | 显示全部楼层
代码如下。。。
Option Explicit
Sub 查找()
Dim lr%, h%, ws As Worksheet, dc$, i%, gzb$, rng As Range
Application.ScreenUpdating = False  '关闭刷屏
Application.DisplayAlerts = False  '关闭警告信息
lr = Cells(Rows.Count, 2).End(3).Row + 1
Range("B2:C" & lr).ClearContents
h = 2
For Each ws In ThisWorkbook.Worksheets
If ws.Name <> "控制台" Then
Cells(h, 2).Value = ws.Name
h = h + 1
End If
Next ws
dc = [A2]
i = 2
Do While Cells(i, 2) <> ""
      gzb = Cells(i, 2)
      Set rng = Sheets(gzb).UsedRange.Find(What:=dc, LookIn:=xlValues, LookAt:=xlWhole)

        If Not rng Is Nothing Then Cells(i, 3) = "是"
       i = i + 1
Loop
MsgBox "查找完毕!"
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-9-20 13:06 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-9-20 13:11 | 显示全部楼层
ykcbf1100 发表于 2024-9-20 12:46
加个错误判断If IsError(arr(i, 3)) = False Then

老师重新写代码,厉害!感谢!

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-9-20 13:16 | 显示全部楼层
quqiyuan 发表于 2024-9-20 12:56
改用find函数,稍作改动。仅供参考。。。

谢谢老师,让我又学了一招!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-19 01:56 , Processed in 0.036500 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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