ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] vba代码运行错误3706

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-9-19 15:27 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 007feiren 于 2024-9-20 08:33 编辑

2.png 3.png 网上得到一个代码,比较两个工作表异同:
Sub Sheet1中有而Sheet2中没有()
    ' 清除A2到A1000区域的内容
    Range("A2:A1000").ClearContents
    ' 创建并设置ADO数据库连接对象
    Set conn = CreateObject("adodb.connection")
    conn.Open "provider=microsoft.jet.oledb.4.0;extended properties=excel 8.0;data source=" & ThisWorkbook.FullName
    ' 定义SQL查询,查找在Sheet1中有但在Sheet2中没有的“姓名”
    Sq1 = "select Distinct *  from [Sheet1$] where 姓名 not in(select 姓名 from [Sheet2$])"
    ' 执行查询并将结果复制到A2单元格开始的区域
    [a2].CopyFromRecordset conn.Execute(Sq1)
    ' 关闭连接并释放对象
    conn.Close
    Set conn = Nothing
End Sub
但是运行时出现3706错误, QQ20240919-152542.png 请高手帮助指点一下,这个错误怎么解决!


QQ20240919-151547.png
1.png

筛选两个工作表中不相同的区域.rar

10.85 KB, 下载次数: 2

TA的精华主题

TA的得分主题

发表于 2024-9-19 18:26 | 显示全部楼层

TA的精华主题

TA的得分主题

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

TA的精华主题

TA的得分主题

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

不会SQL,改用字典

一个代码就够了。。。

筛选两个工作表中不相同的区域.zip

18.99 KB, 下载次数: 0

TA的精华主题

TA的得分主题

发表于 2024-9-20 09:07 | 显示全部楼层
参与一下。。。

  1. Sub ykcbf()   '//2024.9.20
  2.     Application.ScreenUpdating = False
  3.     Set d = CreateObject("Scripting.Dictionary")
  4.     Set d1 = CreateObject("Scripting.Dictionary")
  5.     arr = Sheets("Sheet1").UsedRange
  6.     For i = 2 To UBound(arr)
  7.         If arr(i, 1) <> Empty Then
  8.             d(arr(i, 1)) = ""
  9.         End If
  10.     Next
  11.     brr = Sheets("Sheet2").UsedRange
  12.     For i = 2 To UBound(brr)
  13.         If brr(i, 1) <> Empty Then
  14.             d1(brr(i, 1)) = ""
  15.         End If
  16.     Next
  17.     ReDim zrr(1 To 10000, 1 To 3)
  18.     For i = 2 To UBound(arr)
  19.         s = arr(i, 1)
  20.         If Not d1.exists(s) Then
  21.             m = m + 1
  22.             zrr(m, 1) = s
  23.             zrr(m, 3) = s
  24.         End If
  25.     Next
  26.     n = 0
  27.     For i = 2 To UBound(brr)
  28.         s = brr(i, 1)
  29.         If Not d.exists(s) Then
  30.             n = n + 1
  31.             zrr(n, 2) = s
  32.             zrr(m + n, 3) = s
  33.         End If
  34.     Next
  35.     Set d = Nothing
  36.     Set d1 = Nothing
  37.     With Sheets("Sheet3")
  38.         .UsedRange.Offset(1).ClearContents
  39.         .[a2].Resize(m + n, 3) = zrr
  40.     End With
  41.     Application.ScreenUpdating = True
  42.     MsgBox "OK!"
  43. End Sub

复制代码


TA的精华主题

TA的得分主题

 楼主| 发表于 2024-9-20 16:40 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

感谢,你也是个高手!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-9-21 11:17 , Processed in 0.046210 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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