ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 字典问题不知道怎么解决了

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-6-9 19:47 | 显示全部楼层 |阅读模式
小弟做了个遍历文件夹取数的SUB,第一个文件取数很正常,到打开第二个文件的时候字典就出错了,不知道什么原因,请大家帮忙一下。
Sub HuiZong()
Dim myfile, mypath, wb '声明变量
Dim d As Object
Dim arr As Variant

Dim p, r, m As Integer
'On Error Resume Next    '// 发生错误,自动执行下一句,就是忽略错误
Application.ScreenUpdating = False '//关闭屏幕刷新
Application.DisplayAlerts = False '//关闭系统提示
Worksheets("对账单台账").Range("A2:H65536").Clear '清除除表头之外的所有内容
    mypath = ThisWorkbook.Path           '找到当前工作簿的路径
    myfile = Dir(mypath & "\*.xls*")     '遍历当前文件夹下的Excel文件
Set d = CreateObject("scripting.dictionary") '定义字典
p = 2
Do While myfile <> ""                '当找到的文件不为空时
    If myfile <> ThisWorkbook.Name Then   '当找到的文件不是当前Excel工作簿时

    Set wb = GetObject(mypath & "\" & myfile)   '得到dir找到的工作簿的内容,设为wb
        If wb.Name Like "DZ" & "*" Then
        With wb.Worksheets("page1")        '对找到的工作簿的sheet1进行操作

           Worksheets("对账单台账").Cells(p, 1).Value = .Cells(4, 2).Value
           Worksheets("对账单台账").Cells(p, 2).Value = .Cells(6, 2).Value
           Worksheets("对账单台账").Cells(p, 3).Value = .Cells(8, 2).Value
           Worksheets("对账单台账").Cells(p, 4).Value = .Cells(4, 10).Value
           Worksheets("对账单台账").Cells(p, 5).Value = .Cells(6, 10).Value
           Worksheets("对账单台账").Cells(p, 6).Value = .Cells(8, 10).Value
           Worksheets("对账单台账").Cells(p, 7).Value = .Cells(10, 10).Value
           r = wb.Worksheets("page1").Range("a65536").End(xlUp).Row - 3

           arr = .Range("c13:c" & r)

              For i = 1 To UBound(arr)
                d(arr(i, 1)) = d(arr(i, 1)) + 1           ‘到这里就出错了’

                 Next

                 k = d.keys
                 x = k(0)
                       For m = 1 To UBound(k)

                        x = x & "\" & k(m)
                        Next




                      Worksheets("对账单台账").Cells(p, 8).Value = x



                      p = p + 1


          End With
        End If
    wb.Close False      '关闭wb工作簿且不保存
    d.RemoveAll
    Set d = Nothing
    End If
    myfile = Dir          '寻找下一个Excel工作簿
Loop
Application.ScreenUpdating = True   '恢复屏幕更新
End Sub


提示错误

提示错误

字典语句中断

字典语句中断

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-6-9 19:49 | 显示全部楼层
第一行是没问题的,第二行取数出现中断了
3.png

TA的精华主题

TA的得分主题

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

把倒数第六行set d=nothing删掉就行了。

你这句话一写,d就不是字典了。

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-6-9 20:49 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-6-9 20:50 | 显示全部楼层
我本来是想把字典清空,后来改用removeall 可以的。完美运行
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-22 12:06 , Processed in 0.032949 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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