VBA是一种自动化语言,它可以使常用的程序自动化,可以创建自定义的解决方案。

我们还可以这样理解:VBA是一些代码的组。

那么你用了这么久的EXCEL,可能从来没在EXCEL的XLS文件中看到过代码,难道就写在单元格里?当然不是。

当你打开一个EXCEL文件,你只能看到由许多单元格组成的工作表,有个简单的方法,通过【ALT】 【F11】的快捷键,打开VBA代码编辑窗口。

EXCEL中的VBA是什么?excel VBA入门的基础语句

VBA代码编辑窗口

和EXCEL以及每一个微软平台下的应用程序都一样,总归是标题栏、菜单栏、工具栏等,接下来,看左边,有一个纵栏,写着“工程—VBAProject”,这里是工程资源管理窗口,里面通过树形列表展示了这个XLS文件(或者标准的应该叫“工作簿”)所包含的各个工作表对象以及工作簿对象本身。

有什么用呢?你双击任何一个SHEET,比如SHEET1,试试?是不是在右侧打开了一个文档编辑窗口?那么你就能明白,如果是SHEET1的代码,就应该写在这里了,那么SHEET2的呢?当然就写在双击SHEET2后打开的窗口里。右侧的文档窗口,顶上有两个下拉列表框,一个写着“通用”,一个写着“声明”,左边的那个是对象列表框,可以让你选择在这个SHEET里面包含的所有对象,右边的那个是过程列表框,可以让你选择和左侧当前选中的对象关联的系统或自定义过程。

excel VBA入门的基础语句

选择当前活动的工作簿:ThisWorkbook.Activate

如果选择其他工作簿,注意该工作簿一定是打开的,并且不要忘记加上后缀“.xls” ,例如:Windows(“Totol.xls”).Activate

选择一个工作表:Sheets(“Balance”).Activate.

选择单元格:Range(“A1”).Select

选择连续的单元格:Range(“A1:G8”).Select

选择不连续的单元格:

Range(“A1,B6,D9”).Select

Range(“A1,B6:B10,D9”).Select

单元格间移动:

ActiveCell.Offset(13, 14).Select

Selection.Offset(-3, -4).Select

Range(“G8”).Offset(-3, -4).Select

注意:你可以定义一变量,并且用offset来实现,例如:

varFreightRowsCount = Range(“A1”).CurrentRegion.Rows.Count

ActiveCell.Offset(varFreightRowsCount, 0).Select

选择整个工作表:Cells.Select

选择当前单元格所在的区域(遇到空行/空列即止):Range(“A1”).CurrentRegion.Select

选择行或列:

Rows(“1”).Select

Columns(“A”).Select

或者:

ActiveCell.EntireRow.Select

ActiveCell.EntireColumn.Select

选择相邻的多行/多列:

Columns(“A:C”).Select

Rows(“1:5”).Select

选择不相邻的多行/多列(注意:和选择相邻的多行/多列不同,使用”Range”而不是”Columns/Rows”:)

Range(“A:A, C:C, E:F”).Select

Range(“1:1,5:6,9:9”).Select

选择当前活动单元格向下至最后一个非空单元格:

Range(“A1”, Range(“A1”).End(xlDown)).Select

Range(ActiveCell, ActiveCell.End(xlDown)).Select

选择当前活动单元格向上至第一个非空单元格:

Range(“A32”, Range(“A32”).End(xlUp)).Select

Range(ActiveCell, ActiveCell.End(xlUp)).Select

选择当前活动单元格向右至第一个非空单元格。(注意:是 “xlTORight”而不是 “xlRight” )

Range(“A1”, Range(“A1”).End(xltoRight)).Select

Range(ActiveCell, ActiveCell.End(xltoLeft)).Select

选择当前活动单元格向右至第10个单元格。

Range(“A2”, Range(“A2”).Offset(0, 10)).Select

Range(ActiveCell, ActiveCell.Offset(0, 10)).Select

选择当前活动单元格向左至第10个单元格。

Range(“A20”, Range(“A20”).Offset(0, -10)).Select

Range(ActiveCell, ActiveCell.Offset(0, -10)).Select

选择当前活动单元格向下至第10个单元格。

Range(“a2”, Range(“a2”).Offset(10, 0)).Select

Range(ActiveCell, ActiveCell.Offset(10, 0)).Select

选择当前活动单元格向上至第10个单元格。Range(“A1”).End(xlDown).Offset(1, 0).Select

选择该行中第一个空单元格:Range(“A1”).End(xltoRight).Offset(0,1).Select

改变区域的大小(由 A1:B5 变为 A1:D10):(注意:改区域并不是向外扩张,而是重新定义了。即 “Selection.Resize(10, 4).Select “而不是”Selection.Resize(5, 2).Select ”

Excel的宏不能记录移至当前行的第一个单元格的动作(即你按下“Home”键的动作),下面的语句则可以做到:ActiveCell.Offset(0, -ActiveCell.Column + 1).Select

移至当前列的第一个单元格:ActiveCell.Offset( -ActiveCell.Row + 1,0).Select

如果只有一个条件及一个动作,你可以用以下语句:

If Selection.Value > 10 Then

Selection.Offset(1,0) = 100

End If

或者更简单的:

If Selection.Value > 10 Then Selection.Offset(1,0) = 100

如果有两个条件及两个动作,你可以用下面的语句:

If Selection.Value > 10 Then

If Selection.Value = 12 Then

Selection.Offset(1,0) = 100

End If

Selection.Offset(1,0) = 20

End If

当有双重条件(并存的条件)和一个动作时,你可以用下面的语句:

If Selection.Value = 10 And Selection.Offset(0,1).Value = 20 Then

Selection.Offset(1,0) = 100

End If

当有双重条件(可选择的条件)和一个动作时,你可以用下面的语句:

If Selection.Value = 10 Or Selection.Offset(0,1).Value = 20 Then

Selection.Offset(1,0) = 100

End If

当只有一个条件和两个动作时,你可以用下面的语句:

If Selection.Value > 10 Then

Selection.Offset(1,0) = 100

Else

Selection.Offset(1,0) = 0

End If

当有不止一个条件,且每个条件都跟随不同的动作时,你可以用下面的语句:

If Selection.Value = 1 Then

Selection.Offset(1, 0) = 10

ElseIf Selection.Value = 2 Then

Selection.Offset(1, 0) = 20

ElseIf Selection.Value = 3 Then

Selection.Offset(1, 0) = 30

ElseIf Selection.Value = 4 Then

Selection.Offset(1, 0) = 40

ElseIf Selection.Value = 5 Then

Selection.Offset(1, 0) = 50

End If

当你不得不测试很多条件,你可以用Select Case 语句来代替If Then..ElseIf 。语法如下:

Sub test()

Select Case Selection.Value

Case Is >= 85

Selection.Offset(0, 1) = “A”

Case Is >= 75

Selection.Offset(0, 1) = “B”

Case Is >= 65

Selection.Offset(0, 1) = “C”

Case Is >= 50

Selection.Offset(0, 1) = “D”

Case Else

Selection.Offset(0, 1) = “F”

End Select

End Sub

这段语句的意思就是:如果所选单元格的值大于85时,则其右边那个单元格的值为“A”…… 所选单元格的值小于50时,其右边那个单元格的值为“F” 。