vba中for if 问题

uuuubird 2016-11-22 08:56:50
1.代码能实现,想问问大家代码效率可否,有没有更好的方法
2.我试验中,多次运行之后就变成了下图(每次运行后新生成的09 3那行删除),为什么rows.count计数会有变化,还是有其它原因
谢谢

...全文
363 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2016-11-24
  • 打赏
  • 举报
回复
引用 8 楼 uuuubird 的回复:
[quote=引用 3 楼 zhao4zhong1 的回复:] 在Excel中开始记录宏,手动完成所需功能,结束记录宏,按Alt+F11键,查看刚才记录的宏对应的VBA代码。
赵4牌复读机,哈哈,谢谢你回复[/quote] 如果还有不明白的地方,按F1,通读Vba for Excel联机帮助。
uuuubird 2016-11-24
  • 打赏
  • 举报
回复
引用 4 楼 Runnerchin 的回复:
最后一个for没意义,i=3才执行,为什么不直接让i=3,脱掉这个for?实际运行效率来看,倒是没区别。 每次运行的时候,你会在当前数据区最下面插入一行,所以这次usedrange.rows.count和前一次的usedrange.rows.count会相差1
for的问题我可以试试看
引用 5 楼 Chen8013 的回复:
[quote=引用 4 楼 Runnerchin 的回复:] 最后一个for没意义,i=3才执行,为什么不直接让i=3,脱掉这个for?实际运行效率来看,倒是没区别。 每次运行的时候,你会在当前数据区最下面插入一行,所以这次usedrange.rows.count和前一次的usedrange.rows.count会相差1
我认为楼主这个应该是“功能测试”的代码,仅针对“B列的值为3”进行的运行结果测试。 实际运用时,B列的数值会有变化的。 不过其实最后那个“For循环”确实是可以不要: 先直接在“工作表”中,选中“D列到M列”,把它们的文字颜色设置为红色; 在“代码中”把某行填入数值(经计算得到的值)后,按该行中B列的值,   直接把该行中对应单元格的文字改为 x 、并把文字颜色改为淡蓝色。[/quote] 哈哈 我确实是“功能测试” 我把需要的技术功能先测试一下 没问题了再写完整代码 谢谢 for的问题我再优化一下
赵4老师 2016-11-23
  • 打赏
  • 举报
回复
在Excel中开始记录宏,手动完成所需功能,结束记录宏,按Alt+F11键,查看刚才记录的宏对应的VBA代码。
舉杯邀明月 2016-11-23
  • 打赏
  • 举报
回复
那个“单元格内容为空”跟 “单元格为 Nothing” 应该是有区别的吧! 估计你删除最后一行,是选中后按“Del键”删除的, 我觉得应该是在“最后一行的行号上”点鼠标右键,再“删除行”,才会保持“rows.count计数不变”。 (没测试你这段代码,猜的。 
一如既往哈 2016-11-23
  • 打赏
  • 举报
回复
就这点处理量应该不需要考虑效率,在当代强大的cpu的处理能力之下,这点东西毛毛雨啦,除非是每秒都要处理的东西,那就要好好考虑效率的问题(比如对象要在循环体或timer以外set好,多用with结构.......) 说说你代码的目的吧.......看完你的代码,我都有点逻辑混乱了(明明resize(1,6)啦,又来个.cells(2,i))
uuuubird 2016-11-23
  • 打赏
  • 举报
回复
引用 3 楼 zhao4zhong1 的回复:
在Excel中开始记录宏,手动完成所需功能,结束记录宏,按Alt+F11键,查看刚才记录的宏对应的VBA代码。
赵4牌复读机,哈哈,谢谢你回复
uuuubird 2016-11-23
  • 打赏
  • 举报
回复
引用 2 楼 Chen8013 的回复:
那个“单元格内容为空”跟 “单元格为 Nothing” 应该是有区别的吧! 估计你删除最后一行,是选中后按“Del键”删除的, 我觉得应该是在“最后一行的行号上”点鼠标右键,再“删除行”,才会保持“rows.count计数不变”。 (没测试你这段代码,猜的。 
的确是“Del键”删除的,哈哈
uuuubird 2016-11-23
  • 打赏
  • 举报
回复
引用 1 楼 Topc008 的回复:
就这点处理量应该不需要考虑效率,在当代强大的cpu的处理能力之下,这点东西毛毛雨啦,除非是每秒都要处理的东西,那就要好好考虑效率的问题(比如对象要在循环体或timer以外set好,多用with结构.......) 说说你代码的目的吧.......看完你的代码,我都有点逻辑混乱了(明明resize(1,6)啦,又来个.cells(2,i))
哈哈 丢人了 代码量确实不大 我就担心代码跑着跑着出问题 我再优化一下就行了 resize(1,6)我是想缩至2行6列的区域 这样进行循环不是简单点吗 是吧
舉杯邀明月 2016-11-23
  • 打赏
  • 举报
回复
引用 4 楼 Runnerchin 的回复:
最后一个for没意义,i=3才执行,为什么不直接让i=3,脱掉这个for?实际运行效率来看,倒是没区别。 每次运行的时候,你会在当前数据区最下面插入一行,所以这次usedrange.rows.count和前一次的usedrange.rows.count会相差1
我认为楼主这个应该是“功能测试”的代码,仅针对“B列的值为3”进行的运行结果测试。 实际运用时,B列的数值会有变化的。 不过其实最后那个“For循环”确实是可以不要: 先直接在“工作表”中,选中“D列到M列”,把它们的文字颜色设置为红色; 在“代码中”把某行填入数值(经计算得到的值)后,按该行中B列的值,   直接把该行中对应单元格的文字改为 x 、并把文字颜色改为淡蓝色。
X-i-n 2016-11-23
  • 打赏
  • 举报
回复
最后一个for没意义,i=3才执行,为什么不直接让i=3,脱掉这个for?实际运行效率来看,倒是没区别。 每次运行的时候,你会在当前数据区最下面插入一行,所以这次usedrange.rows.count和前一次的usedrange.rows.count会相差1

2,462

社区成员

发帖
与我相关
我的任务
社区描述
VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。
社区管理员
  • VBA
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧