ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 是我对字典的应用有偏差么,请大佬们助攻啊

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-5-29 10:09 | 显示全部楼层 |阅读模式
本帖最后由 奚振 于 2020-5-29 15:22 编辑

image.png
本地窗口中对字典的item的返回值怎么会是字典的关键字呢?
dict(Trim(Brr(i, 4))) = Trim(Brr(i, 22))
Trim(Brr(i, 22))这部分在表格是日期的显示啊,这个脚本的主要作用是跨工作簿对应取值后,赋给单元格的,结果执行后单元格都是空值。是我代码的编写有问题么?
-------------------------------------------------------------------------------------------------------------------------------
代码我有整理一遍,也用debug验证了,代码应该是没有问题的。两个工作簿的密码和只读都取消了,可在单元格内还是显示不出来。现在附上内容删减后的原件,还望大神们再帮我看看吧,跪求了。
附件内有窗体和模块,可以直接打开excel文件,代码应该都在

新建文件夹 (2).rar

656.8 KB, 下载次数: 1

TA的精华主题

TA的得分主题

发表于 2020-5-29 10:15 | 显示全部楼层
本地窗口看到的是key

TA的精华主题

TA的得分主题

发表于 2020-5-29 10:17 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
至于为什么返回空,你可以检查一下字典中的key是不是和结果表中字符完全一致,不一致,那么dict.exists的结果是false,则赋值语句不会被执行,结果都是空。

TA的精华主题

TA的得分主题

发表于 2020-5-29 10:21 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
还是上附件 吧

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-5-29 11:05 | 显示全部楼层
micch 发表于 2020-5-29 10:17
至于为什么返回空,你可以检查一下字典中的key是不是和结果表中字符完全一致,不一致,那么dict.exists的结 ...

老师 您能在看一下我的代码在表达上有没啥问题比如将cells(j,16)= dict(trim(Crr(j,5)))这样的表达,直接赋给单元格,这样的赋值是表示将关键字的项赋给单元格么

TA的精华主题

TA的得分主题

发表于 2020-5-29 11:32 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
可以这样用啊,你可以设置断点,看看这一句是否执行过,也可以d.items看看存的内容是啥

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-5-29 12:05 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
micch 发表于 2020-5-29 11:32
可以这样用啊,你可以设置断点,看看这一句是否执行过,也可以d.items看看存的内容是啥

嗯嗯 我刚才用debug试过了,单独赋给变量是可以的,但是到单元格就没有显示了。我在想是不是跟被应用数据的工作簿为只读模式有关呢,请老师指点啊

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-5-29 12:06 | 显示全部楼层
micch 发表于 2020-5-29 11:32
可以这样用啊,你可以设置断点,看看这一句是否执行过,也可以d.items看看存的内容是啥

被引用的工作簿是只读模式

TA的精华主题

TA的得分主题

发表于 2020-5-29 12:10 | 显示全部楼层
既然字典有数据,并且可以赋值给变量,那就是输出的问题了,所以是单元格选择的错误,cell这里需要加前缀限制输出到哪个工作簿的哪个工作表

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-5-29 12:12 | 显示全部楼层
micch 发表于 2020-5-29 12:10
既然字典有数据,并且可以赋值给变量,那就是输出的问题了,所以是单元格选择的错误,cell这里需要加前缀限 ...

With ThisWorkbook.Worksheets("镜头记分表")
    Crr = .[A1].CurrentRegion
    For j = 2 To UBound(Crr)
        If Len(Crr(j, 5)) > 0 Then
            If dict.exists(Trim(Crr(j, 5))) Then
                tempp = dict(Trim(Crr(j, 5)))
                    If Len(tempp) > 0 Then
                        .Cells(j, 16) = tempp
                    End If
            End If
        End If
    Next
    End With
这里我是又改了一下,但是还是单元格输出为空白的,没显示
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-4-27 13:12 , Processed in 0.037576 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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