|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
本帖最后由 lee1892 于 2013-12-13 10:01 编辑
Excel 2003 测试结果,以下只讨论Range属性的两个参数为文本形式:
1、Range属性只接受 最多 2 个参数,下述代码报错- ActiveSheet.Range("A1:A5", "B1:B5", "C1:C5")
复制代码 2、Range属性的第 2 个参数字符串不能使用合并区域操作符(逗号)和相交区域操作符(空格),下述代码报错- ActiveSheet.Range("A1:A5", "B1:F5, G1:H5")
- ActiveSheet.Range("A1:A5", "B1:B5 C1:C5")
复制代码 3、为区域的左上角或右下角,取决于第 1 个参数和其相对位置:- ActiveSheet.Range("B1:B5", "H1:H5") 等价于 ActiveSheet.Range("B1:H5")
- ActiveSheet.Range("F1:F5", "C1:C5") 等价于 ActiveSheet.Range("C1:F5")
复制代码 4、如果第 1 个参数中包含有合并或相交区域操作符,则不再接受第 2 个参数,下述代码报错- ActiveSheet.Range("A1:A5, B1:B5", "C1:C5")
- ActiveSheet.Range("A1:C5, B1:D5", "F1:F5")
复制代码 5、3个区域操作符的优先级:包括(冒号)> 相交(空格)> 合并(逗号),可以使用括号确定优先计算- ActiveSheet.Range("B1:D5 C1:G5,F1:F5") 等价于 ActiveSheet.Range("C1:D5,F1:F5")
- ActiveSheet.Range("B1:D5,C1:G5 F1:F5") 等价于 ActiveSheet.Range("B1:D5,F1:F5")
- ActiveSheet.Range("(B1:D5,C1:G5) F1:F5") 等价于 ActiveSheet.Range("F1:F5")
复制代码 6、并列的合并操作符,奇数位正常,偶数位异常,这个特点很莫名其妙,因为其内部的顺序是一致的,下述代码的输出可以说明- For Each oRng In ActiveSheet.Range("A1:B3, D1:E3")
- Debug.Print oRng.Address
- Next
- 输出为:
- $A$1
- $B$1
- $A$2
- $B$2
- $A$3
- $B$3
- $D$1
- $E$1
- $D$2
- $E$2
- $D$3
- $E$3
复制代码 貌似微软也没有对此有任何特殊说明,只能这么记着就是了。下述代码产生的效果,如楼主描述的一样- ActiveSheet.Range("D1:E5,G1:H5,J1:K5,M1:N5").Value = ActiveSheet.Range("A1:B5").Value
复制代码
不过我们可以确定的是二维内存数组的元素顺序,以上图为例,下述代码输出的是顺序排列的1~10,这和前面反映的单元格顺序是不同的- arr = ActiveSheet.Range("A1:B5").Value
- For Each i In arr
- Debug.Print i
- Next
复制代码
|
|