Excel精英培训网

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

[已解决]请求解释代码

[复制链接]
发表于 2016-2-18 17:33 | 显示全部楼层 |阅读模式
本帖最后由 lingyuncelia1 于 2016-2-19 14:25 编辑

Sub 同宫报错()
Dim arr, d, i%, j%, k%, h%, l%
Set d = CreateObject("scripting.dictionary")
For h = 1 To 7 Step 3
    For l = 1 To 7 Step 3
        arr = Cells(h, l).Resize(3, 3)
        For i = 1 To 3
            For j = 1 To 3
                s = arr(i, j)
                If Len(s) = 1 Then
                   If Not d.exists(s) Then
                        d(s) = Cells(h + i - 1, l + j - 1).Address
                    Else
                        MsgBox "同宫出错:" & d(s) & "---" & Cells(h + i - 1, l + j - 1).Address
                    End If
                End If
                'If Len(s) = 1 And d(s) = 2 Then MsgBox "同宫出错:"
            Next
        Next
        d.RemoveAll
    Next
Next
End Sub
有哪位大神可以详细解释黄色背景的代码?
If Not d.exists(s) Then
如果字典里面不存在s表示的关键字,则执行下面语句.
不明白为什么这样就可以求出同宫有相同的一位数(9格为一宫)


最佳答案
2016-2-18 22:04
如果改成这样你能看懂不?
                   If d.exists(s) Then
                        MsgBox "同宫出错:" & d(s) & "---" & Cells(h + i - 1, l + j - 1).Address
                    Else
                        d(s) = Cells(h + i - 1, l + j - 1).Address
                    End If

TEXT1.zip

15.32 KB, 下载次数: 2

发表于 2016-2-18 22:04 | 显示全部楼层    本楼为最佳答案   
如果改成这样你能看懂不?
                   If d.exists(s) Then
                        MsgBox "同宫出错:" & d(s) & "---" & Cells(h + i - 1, l + j - 1).Address
                    Else
                        d(s) = Cells(h + i - 1, l + j - 1).Address
                    End If
回复

使用道具 举报

 楼主| 发表于 2016-2-19 11:59 | 显示全部楼层
wanao2008 发表于 2016-2-18 22:04
如果改成这样你能看懂不?
                   If d.exists(s) Then
                        MsgBox "同 ...

还可以
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-24 21:46 , Processed in 1.401177 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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