本帖最后由 隐身 于 2012-5-28 08:22 编辑
兰校长的VBA80集第十一集提到的代码如下
- Sub dd() 'union示例
- Dim rg As Range, x As Integer
- For x = 2 To 10 Step 2
- If x = 2 Then Set rg = Cells(x, 1)
- Set rg = Union(rg, Cells(x, 1))
- Next x
- rg.Select
- End Sub
复制代码
我不明白的是为何要用If x = 2 Then Set rg = Cells(x, 1)这个判断,去掉为何不行。希望各位能提供帮助,解释一下。
通过2楼和3楼的简单提示,自己稍微有点理解了:union至少要有两个参数,也就是当x=2的时候,rg会为空,union(rg,cells(2,1))只有cells(2,1)一个参数,因为rg初始值是空的,出现错误。
要union至少有两个参数,必须让rg初始值不为空。rg赋值后,union(cells(2,1),cells(2,1))是符合union语法的,不会报错。
如果不使用IF判断,我们可以在前面对rg赋一个初始值,如下代码
- Sub dd2() 'union示例
- Dim rg As Range, x As Integer
- Set rg = Cells(2, 1)
- For x = 2 To 10 Step 2
- Set rg = Union(rg, Cells(x, 1))
- Next x
- rg.Select
- End Sub
复制代码
他是为了后面union 不出错
因为union的第一个参数必须不为空,否则就会运行错误。所以要先给rg赋个值
|