Excel精英培训网

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

[已解决]求助:为什么不错?

[复制链接]
发表于 2010-6-1 10:27 | 显示全部楼层 |阅读模式

隔行插行,用倒排,很容易。

但发现这段代码,虽然达不到想要的结果,但是不报错,奇怪。应该是错的呀

Sub aa4()

Dim j As Integer
Dim m As Integer

m = Sheets(1).[A65536].End(xlUp).Row
    For i = 1 To m
      Range("A" & i).EntireRow.Insert
      m = Sheets(1).[A65536].End(xlUp).Row
    Next
End Sub
按道理,由于m一直增加,这个表应该一直循环到死机为止,可是很正常,没有一点问题。

比如说当初始单元格为3行时,它只插入3行。是什么在控制它呢?

最佳答案
2010-6-1 10:42

哦,我说错了,你的for内部虽然有一个求m的,这个m也跟着变化

但是for一旦开始,起始位置就会确定下来

这样你m再改变是不会对for有影响的

除非你换成do while的用法或许会死循环

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2010-6-1 10:39 | 显示全部楼层

你的m值只求了一次,也就是说你插入新行之后m值不变

而你用了for i=1 to m

所以固定插入m次后就停止运行了.

回复

使用道具 举报

发表于 2010-6-1 10:42 | 显示全部楼层    本楼为最佳答案   

哦,我说错了,你的for内部虽然有一个求m的,这个m也跟着变化

但是for一旦开始,起始位置就会确定下来

这样你m再改变是不会对for有影响的

除非你换成do while的用法或许会死循环

回复

使用道具 举报

发表于 2010-6-1 10:44 | 显示全部楼层

m值在FOR循环内重新赋值,对i没有影响。

可以这样:

Sub aa4()

Dim j As Integer
Dim m As Integer

m = Sheets(1).[A65536].End(xlUp).Row
    For i = 1 To m * 2 Step 2
      Range("A" & i).EntireRow.Insert
          Next
End Sub

[此贴子已经被作者于2010-6-1 10:44:15编辑过]
回复

使用道具 举报

 楼主| 发表于 2010-6-1 10:52 | 显示全部楼层

对于变量的认识又加了一层
回复

使用道具 举报

发表于 2010-6-1 10:52 | 显示全部楼层

===================

看错题意

[em04]
[此贴子已经被作者于2010-6-1 10:52:54编辑过]
回复

使用道具 举报

 楼主| 发表于 2010-6-1 10:55 | 显示全部楼层

展翅是老线,最佳给小线吧

[em07]
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-28 06:45 , Processed in 0.212841 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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