大众计算机学习网

专门提供各种电脑教程

Excel VBA for递减循环删除动态行的代码示例

Admin | 2010-11-21 8:35:53 | 被阅次数 | 24253

  在VBA中,可以使用for循环,也可以使用For Each进行循环。

  循环在VBA中,可以方便的获取EXCEL中的行列数据,甚至是指定的行列数据。

  但是,很多人只知道或常用FOR自增的循环,却未知FOR循环中的递减循环,却是如此的玄妙。

  今天,本人遇到一个使用VBA删除动态行的问题,老是解决不了,忽然灵光一现,想起了使用FOR递减循环的方式删除,终于得以将问题解决。

  下面,俺就将for循环中的递减循环是如何动态删除行代码,拿出来与大家分享。

  下面我们先看for递减循环的语句:

  for i=Max to Min step -Boot

    '这里是你的代码

  next

  上述是for递减循环的语法。其中Max表示大值;Min表示小值。也就是说,for循环中的变量,是从大值Max逐渐变到小值Min的。在变化的过程中,每变一次,i变量的值减小多少,这个是由Boot步长来决定的。可以设置为1,也可以是2,也可以是3…一切由我们来决定。

  ①示例代码一

  for i=8 to 0 step -2

    MsgBox i

  next

  以上的i值,从8变到0,每变一次,i减少2。这就相当于:

  第一步:i=8
  第二步:i=6
  第三步:i=4
  第四步:i=2
  第五步:i=0

  以上的递减循环,其实只执行了五次,即五步。

  ②使用for递减循环删除行

  比如,您的Excel表中,1到9行的是固定的,不允许你删除;而表格的最后两行,也是固定的,不能删除的。现在的问题是从10行到倒数第三行,这个范围,行数是变化的,不知道啥时候有多少行,现在,叫你删除这些动态行,你该如何删除呢?

  如上问题的for递减循环删除动态行代码如下:

  For m = Sheet1.UsedRange.Rows.Count-2 To 10 Step -1 '删除多余数据
   Sheet1.Rows(m).Delete
  Next m

  上述可能太抽象了点,下面,本人给出一个更简单的。比如,叫你使用VBA删除4到8行,这样,就相当于让你使用VBA删除第4、第5、第6、第7、第8行。如何删除呢?代码如下:

  For k = 8 To 4 Step -1 '删除多余数据
   Sheet1.Rows(k).Delete
  Next k