提醒:本页面将不再更新、维护或者支持,文章、评论所叙述内容存在时效性,涉及技术细节或者软件使用方面不保证能够完全有效可操作,请谨慎参考!

最近在单位经常要整理Excel表格,大量的数据有时候用公式函数处理也略显麻烦,这时我们可以使用Excel的VBA特性,打开VBA编辑器。

我们需要给要处理的表指派一个任务,这时我们可以建立子过程,建立的方式只要输入:

Sub Sample()
   ' TODO : 这里写执行代码
End Sub

这样我们就建立起名称为Sample的子过程,下面我们可以单击运行箭头,然后在宏列表中选择我们的子过程执行,不过现在没有代码,所以将不会有什么结果。

将上面的代码改成下面这样,再次运行,就可以看到消息框“Hello, World”。

Sub Sample()
   MsgBox "Hello, World"
End Sub

好了,下面需要给子过程指派指定的工作表,比如工作表名为Sheet1,下面几步建立起工作表的关联。

Sub Sample()
   Dim ws As Worksheet
   ' 设定ws引用Sheet1对象
   Set ws = Worksheets("Sheet1") 
   ws.Activate ' 激活指定的表
   ' TODO : 这里放对表操作的代码
   Set ws = Nothing ' 销毁对象引用
End Sub

两个常见的操作是设置行高(RowHeight)和列宽(ColumnWidth)。我们可以通过ActiveSheet.Rows( 行数 )获得指定行的对象,或者通过ActiveSheet.Columns( 列数 )获得列对象,那么行高和列宽的设置可以像下面这样:

Sub Sample()
   Dim ws As Worksheet
   ' 设定ws引用Sheet1对象
   Set ws = Worksheets("Sheet1")
   ws.Activate ' 激活指定的表

   ActiveSheet.Rows(1).RowHeight = 30
   ActiveSheet.Columns(1).ColumnWidth = 10

   Set ws = Nothing ' 销毁对象引用
End Sub

需要注意的是,行和列都是从1开始数起。

接下来就是对每个单元格的操作了,刚才我们设定ws引用Sheet1对象,那么单元格对象就是ws.Cells( 行数 , 列数 )。

Sub Sample()
   Dim ws As Worksheet
   Set ws = Worksheets("Sheet1") ' 设定ws引用Sheet1对象
   ws.Activate ' 激活指定的表
   
   Dim i As Integer
   For i = 1 To 50
      ' 设置第3列1~50行的单元格值
      ws.Cells(i, 3).Value = 0
      ' 设置第4列1~50行的单元格文本
      ws.Cells(i, 4).Text = "hi"
   Next i

   Set ws = Nothing ' 销毁对象引用
End Sub

好的先介绍这么多,如果大家想深入研究,不妨参阅 《Microsoft Excel Visual Basic参考》