zzVBA入门的基础语句

本文介绍如何在Excel VBA中选择工作簿、工作表和单元格的方法,包括选择连续或不连续的单元格、整张工作表等技巧。此外,还详细讲解了如何使用If...Then...EndIf等条件语句以及Select Case语句进行逻辑判断。
 选择当前活动的工作簿:

 

 

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..Then...EndIf

 

 

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

 

 

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..Then...And...EndIf

 

 

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

 

 

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

 

 

Selection.Offset(1,0) = 100

 

 

End If

 

 

 

 

关于If..Then...Or...EndIf

 

 

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

 

 

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

 

 

Selection.Offset(1,0) = 100

 

 

End If

 

 

 

 

关于If..Then...Else...EndIf

 

 

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

 

 

If Selection.Value > 10 Then

 

 

Selection.Offset(1,0) = 100

 

 

Else

 

 

Selection.Offset(1,0) = 0

 

 

End If

 

 

 

 

关于If..Then..ElseIf...EndIf

 

 

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

 

 

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

 

 

当你不得不测试很多条件,你可以用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”

 

 

 

 

这里有一些关于VBA函数 LCase, Now(), UCase 的例子:

 

 

注意:很多EXCEL函数都可以以下面的形式用在VBA中:

 

 

varAnswer = Application.WorksheetFunction.Sum(Range("A1:A32"))

 

 

或者

 

 

varAnswer = Application.Sum(Range("A1:A32"))

 

 

 

 

LCase

 

当对输入的字符做判断时,我们无法知道用户输入的字符是大写还是小写,用LCase函数可以将其转化为小写:

 

 

If LCase(Selection.value)= "toto" then...

 

 

or

 

 

Select Case LCase(Selection.value)

 

 

or

 

 

DO WHILE LCase(Selection.value)<>"toto"

 

 

 

 

NOW()

 

NOW() 既是Excel 函数也是VBA 函数。

 

 

通过下面的语句,在打开工作簿时,单元格 "A1"就会显示为当前时间:

 

 

Range("A1").Formula = "=Now()"

 

 

下面的语句则在执行后赋予单元格“A1”当前时间,该时间不会改变除非你再次执行语句。并且你每次打开工作簿后,单元格“A1”的值不会改变。

 

 

Range("A1").Value = Now()

 

 

 

 

UCase

 

当对输入的字符做判断时,我们无法知道用户输入的字符是大写还是小写,用LCase函数可以将其转化为大写:

 

 

If UCase(Selection.value)= "TOTO" then...

 

 

or

 

 

Select Case UCase(Selection.value)

 

 

or

 

 

DO WHILE UCase(Selection.value)<>"TOTO"

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值