Excel精英培训网

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

[已解决]帮忙解释一下一小段代码的意思

[复制链接]
发表于 2013-7-31 11:55 | 显示全部楼层 |阅读模式
Sub Macro()
    Dim rng As Range, rngA As Range, i As Byte
    For Each rng In ActiveSheet.UsedRange
        If rng.MergeCells Then
            If rng.Address = Split(rng.MergeArea.Address, ":")(0) Then   '1 获取单元格地址,但这个 :  与 (0) 的作用是什么呢?
               If rngA Is Nothing Then     '2 为什么平判断 rngA是否为空?它只声明为Range,但没有使用过。
                    Set rngA = rng          '3 赋值是为了什么?赋值后的作用是?
                Else
                    Set rngA = Application.Union(rngA, rng)  'Union目前返回两个合并区域,这里的rngA代码列吗?
                End If
             i = i + 1
            End If
         End If
    Next
    MsgBox i & Chr(13) & rngA.Address
End Sub

望解答,谢谢各位。

最佳答案
2013-7-31 12:13
1.是通过把字符串分割成数组(用:做分割符),然后提取第1个地址,当然,你要是用mid来定位提取也可以实现,不过这没这个函数方便。
2.先判断是否为空,如果为空,就直接引定某个单元格地址,否则就要用UNION来合并了。
3.rga之前得到的rng嘛。
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-7-31 12:13 | 显示全部楼层    本楼为最佳答案   
1.是通过把字符串分割成数组(用:做分割符),然后提取第1个地址,当然,你要是用mid来定位提取也可以实现,不过这没这个函数方便。
2.先判断是否为空,如果为空,就直接引定某个单元格地址,否则就要用UNION来合并了。
3.rga之前得到的rng嘛。
回复

使用道具 举报

发表于 2013-7-31 12:13 | 显示全部楼层
回复

使用道具 举报

发表于 2013-7-31 12:19 | 显示全部楼层
  1. Sub Macro()
  2.     Dim rng As Range, rngA As Range, i As Byte
  3.     For Each rng In ActiveSheet.UsedRange
  4.         '判断指定区域是否有合并单元格
  5.         If rng.MergeCells Then
  6.             Debug.Print "合并单元格的地址:" & rng.MergeArea.Address
  7.             If rng.Address = Split(rng.MergeArea.Address, ":")(0) Then
  8.                 If rngA Is Nothing Then
  9.                     Set rngA = rng
  10.                     Debug.Print "rng为空时:" & rngA.Address
  11.                 Else
  12.                     Set rngA = Application.Union(rngA, rng)
  13.                     Debug.Print "合并后的rngA:" & rngA.Address
  14.                 End If
  15.                 i = i + 1
  16.             End If
  17.         End If
  18.     Next
  19.     '改一下,加个判断,避免出错的情况
  20.     If Not rngA Is Nothing Then MsgBox i & Chr(13) & rngA.Address
  21. End Sub
复制代码
加点DEBUG.PRINT,你可以看下立即窗口的输出。
回复

使用道具 举报

发表于 2013-7-31 13:40 | 显示全部楼层
学习学习
回复

使用道具 举报

 楼主| 发表于 2013-7-31 13:57 | 显示全部楼层
hwc2ycy 发表于 2013-7-31 12:19
加点DEBUG.PRINT,你可以看下立即窗口的输出。

非常感谢!{:11:}
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 15:17 , Processed in 0.341433 second(s), 8 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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