Excel精英培训网

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

[已解决]VBA 代码错误指点

[复制链接]
发表于 2012-9-29 10:38 | 显示全部楼层 |阅读模式
错误代码
Sub t()
Dim x As Integer
Dim rg As Range
For x = 1 To 13
Set rg = Range("a1")
If Range("a" & x + 1) = Range("a" & x) Then
Set rg = Union(rg, Range("a" & x + 1))
Else
rg.Merge
Set rg = Range("a" & x + 1)
End If
Next x
End Sub
为什么set语句要放在for语句前面,新手请高手指教。
最佳答案
2012-9-29 10:45
如果不放前,每一次循环的时候RG又等于A1了,这样就达不到合并相同数值单元格的目的了。
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2012-9-29 10:45 | 显示全部楼层    本楼为最佳答案   
如果不放前,每一次循环的时候RG又等于A1了,这样就达不到合并相同数值单元格的目的了。
回复

使用道具 举报

发表于 2012-9-29 13:26 | 显示全部楼层
给你一个简单的例子
y的初始值是50,我们要在他的基础上对 1 到10 这10个数中的 偶数进行累加

y在 for 循环外的代码

  1. Sub cc()
  2. y = 50
  3. For X = 1 To 10
  4.   If X Mod 2 Then y = y + X
  5. Next
  6. msgbox y
  7. End Sub
复制代码
换成你那个,把 y 放到 for  循环内

  1. Sub cc()
  2. For X = 1 To 10
  3.   y = 50
  4.   If X Mod X Then y = y + X
  5. Next
  6. msgbox y
  7. End Sub
复制代码
两者的结果,很明显是不一样的吧?那个结果是对的呢?也很清楚了吧?
回复

使用道具 举报

发表于 2012-9-29 18:47 | 显示全部楼层
除了第一个set的问题而外,还有漏洞
回复

使用道具 举报

发表于 2012-10-3 20:42 | 显示全部楼层
上清宫主 发表于 2012-9-29 18:47
除了第一个set的问题而外,还有漏洞

X值的最大问题?
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 08:47 , Processed in 0.320902 second(s), 8 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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