最近在单位经常要整理Excel表格,大量的数据有时候用公式函数处理也略显麻烦,这时我们可以使用Excel的VBA特性,打开VBA编辑器。
我们需要给要处理的表指派一个任务,这时我们可以建立子过程,建立的方式只要输入:
1 2 3 | Sub Sample() ' TODO : 这里写执行代码 End Sub |
这样我们就建立起名称为Sample的子过程,下面我们可以单击运行箭头,然后在宏列表中选择我们的子过程执行,不过现在没有代码,所以将不会有什么结果。
将上面的代码改成下面这样,再次运行,就可以看到消息框“Hello, World”。
1 2 3 | Sub Sample() MsgBox "Hello, World" End Sub |
好了,下面需要给子过程指派指定的工作表,比如工作表名为Sheet1,下面几步建立起工作表的关联。
1 2 3 4 5 6 7 8 | 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(列数)获得列对象,那么行高和列宽的设置可以像下面这样:
1 2 3 4 5 6 7 8 9 10 11 | 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(行数, 列数)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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参考》。