Excel VBA 入门

1、文件格式javascript

要使用VBA,excel文件必须保存为启用宏的工做簿,即xlsm格式。java

 

2、启动VBA编辑器编程

打开工做簿后,要启动VBA编辑器,有两种方法,一是在工做表的名字上面点击右键,选择“查看代码”,另外一种就是快捷键Alt+F11编程语言

 

3、工程资源管理器简介编辑器

VBA编辑器右边的树形目录就是工程资源管理器,以下图,列示了一个工程(VBAProject)及其下面的各个对象。一个工做簿就是一个工程,下面的sheet1就表明一张工做表,双击它能够查看和编辑这张工做表的代码,在里面实现各类功能,ThisWorkbook表明整个工做簿。oop

 

4、当即窗口、MsgBox与Hello World程序spa

 与全部其它编程语言入门同样,第一个程序都是输出一句话:Hello World。3d

首先选择菜单栏——视图——当即窗口打开当即窗口(快捷键Ctrl+G),当即窗口的意思就是这里面的代码在输入回车以后会被当即执行,有点像调试javascript的Console。调试

                         

在窗口中输入excel

MsgBox "Hello World"

而后回车,就会看到hello world对话框。

   

 

5、工做表——Worksheets(1)、Sheets(1)和Sheet1

下面三行代码都会输出工做表1的名称:

MsgBox Worksheets(1).name
MsgBox Sheets(1).name
MsgBox Sheet1.name

Worksheets表示当前活动工做簿中全部工做表的集合,Worksheets(1)表示集合中的第1张工做表,也就是Sheet1

Sheets表示当前活动工做簿中全部图表(Charts)和工做表(Worksheets)的集合,也就是说Sheets包含上面的Worksheets

Sheet1直接表示当前活动工做簿中的第一张表

 

6、区域——Range

好比,Range("A1")表示A1单元格,Range("A1:B2")表示由A一、A二、B一、B2四个单元格组成的区域,以此类推;若是要表示不连续的区域,将多个不连续区域用逗号隔开便可,好比Range("A1:B2,C3:D4")

如下代码输入区域的地址:

MsgBox Sheet1.Range("A1:B2").Address

运行结果如图:

7、单元格——Cells

Cells(1,2)——表示第1行第2列的单元格,即B1单元格。

Cells(1,2) = “我是一个单元格”——表示在第1行第2列填上文本“我是一个单元格”

 

8、流程控制语句

If condition Then

...

End if

---------------------------------------

If condition Then

...

Else

...

End if

----------------------------------------

If condition Then

...

ElseIf condition Then

...

Else

...

End If

-----------------------------------------

For i=0 to 100

...

Next

-----------------------------------------

While condition

...

Wend

-----------------------------------------

Do

...

Loop While condition

-----------------------------------------

 

9、复制

单元格复制:

Cells(1,2).Copy Cells(1,3) 

以上代码将第1行第2列的数据复制到第1行第3列

---------------------------------------------------------

区域复制:

Range("A1:B2").Copy Range("C3") 

以上代码将A1:B2区域的内容复制到C3区域

----------------------------------------------------------

行或列复制:

Rows(1).Copy Rows(2) 
Columns(3).Copy Columns(4)

将第1行的数据复制到底2行

将第3行的数据复制到第4行

----------------------------------------------------------

10、清除——Clear和ClearContent

Range(A1:B2).ClearContent  '清除区域内容
Range(A1:B2).Clear  '清除区域,包括内容和格式等

 

11、行和列自适应高(宽)度

Rows.AutoFit
Columns.AutoFit

 

12、跳转到某工做表

跳转到某工做表即激活某个工做表,使它变成活动状态:

Sheet2.Activate

 

十3、事件

好比要实现双击Sheet1单元格A1时弹窗提示good,那么在工程资源管理器中双击Sheet1,打开Sheet1的代码窗口,窗口顶部第一个下拉菜单选择worksheet,第二个下拉菜单选择BeforeDoubleClick,这时代码窗口就会出现这样一段代码:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

End Sub

这段代码表示Sheet1工做表任意地方被双击时会执行的操做,但咱们要的是A1单元格被双击时弹窗,那么还要对被双击的地方进行判断,被双击的目标即参数中的Target,咱们根据地址判断Target是否是A1,是就弹窗提示,不是就不执行任何操做:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Address = "$A$1" Then
    MsgBox "good"
End If
End Sub
相关文章
相关标签/搜索