Excel中VBA简单的编程技巧

!本文可能 超过1年没有更新,今后内容也许不会被维护或者支持,部分内容可能具有时效性,涉及技术细节或者软件使用方面,本人不保证相应的兼容和可操作性。

最近在单位经常要整理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参考》

若无特别说明,本网站文章均为原创,原则上这些文章不允许转载,但是如果阁下是出于研究学习目的可以转载到阁下的个人博客或者主页,转载遵循创作共同性“署名-非商业性使用-相同方式共享”原则,请转载时注明作者出处谢绝商业性、非署名、采集站、垃圾站或者纯粹为了流量的转载。谢谢合作!
请稍后...

发表评论

电子邮件地址不会被公开。 必填项已用*标注