台北士林区驾驶学校:EXCEL“宏”处理单元格数据

来源:百度文库 编辑:偶看新闻 时间:2024/05/05 01:49:23

EXCEL“宏”处理单元格数据

 

VBA程序设计的最终目的是什么?更多的当然是为了处理数据。所以,这一贴,将来讲一讲用VBA处理单元格区域。当然,因为我知道的本身不多,所以,并不能把所有的东西都告诉你,我只是举一些简单的例子,供大家学习作参考用。
  建议大家在读贴的过程中,动动手,亲自试一试,相信这样的亲身经历会给你的学习带来一定的帮助。
  一、复制单元格区域
  如果你感到无从着手,别忘了录制宏的功能。虽然录制宏生成的代码不是最有效的,但它生成的代码可以为我们提供很多的信息。
  好了,闲话不说。自行录一段复制A1单元格到B1单元格的宏。打开VBE编辑器,得到如下代码:

  

Sub Macro1()

  '

  ' Macro1 Macro

  ' 宏由 ggsmart 录制,时间: 2009-8-23

  '

   

  '

      Range("A1").Select

      Selection.Copy

      Range("B1").Select

      ActiveSheet.Paste

  End Sub

   除去注释的部分,实际上只有句代码。不用我细讲,大家已经知道它们的作用分别是:第一句选中A1单元格,第二句复制选中的单元格,第三句选中B1单元格,第四句粘贴。
  但是,就像我们用VBA在单元格输入数据不用先选中它一样,我们同样可以在不选中单元格的情况下就执行复制粘贴命令。所以,以上的代码实际上我们可以简化为:

 

 Sub Macro1()

      Range("A1").Copy Range("B1")

  End Sub

以上的代码只是发生在活动工作表内,如果要在其他工作薄或工作薄中实现复制粘贴的命令,只需要改变引用即可。如我们要将Book1.xls的第一个工作表中的A1:A10复制到Book2.xls的第一个工作表中的B1:B10单元格,则代码为:

  Sub mycopy()

     Workbooks("book1").Sheets(1).[a1:a10].Copy _

     Workbooks("book2").Sheets(1).[b1:b10]

  End Sub

  复制的区域过大时,对于目标区域,我们可以只指定一个单元格,这时它代表目标区域的左上角单元格。如上面的代码,我们可以写成这样:

  Sub mycopy()

     Workbooks("book1").Sheets(1).[a1:a10].Copy _

     Workbooks("book2").Sheets(1).[b1]

  End Sub

如果你需要只粘贴数值,或其他什么,你可以利用录制选择性粘贴的宏来进行修改。同样的道理,我就不再多说。
  二、剪切单元格
  剪切单元格,或者说移动单元格和复制单元格类似,有了上面的经验,我们不难得到它的语句。其实它和复制单元格的命令大同小异,唯一不同的是使用Cut方法代替了Copy方法。
  下面的代码是将A1:A10单元格的数移动到B1:B10单元格:

  Sub mycut()

    [a1:a10].Cut [b1]

  End Sub

  三、删除单元格
  删除一个单元格的命令也很简单,调用Range对象的Delete方法即可。同我们用鼠标操作一样,同样有四个选项,下面以删除A1单元格为例:

  [a1].Delete Shift:=xlUp '   下方单元格上移

  [a1].Delete Shift:=xlToLeft '    右侧单元格左移

  [a1].EntireRow.Delete '   整行删除

  [a1].EntireColumn.Delete '   整列删除

 

 

 只写成[a1].Delete时,默认为下方单元格上移