1、选择一个工作表:Sheets(“Balance“).Activate.选择单元格:Range(“A1“).Select选择连续的单元格:Range(“A1:G8“).Select选择不连续的单元格:Range(“A1,B6,D9“).SelectRange(“A1,B6:B10,D9“).Select选择当前活动的工作簿:ThisWorkbook.Activate如果选择其他工作簿,注意该工作簿一定是打开的,并且不要忘记加上后缀“.xls” ,例如:Windows(“Totol.xls“).Activate选择一个工作表:Sheets(“Balance“).Activate.单元格间移动:Ac
2、tiveCell.Offset(13, 14).SelectSelection.Offset(-3, -4).SelectRange(“G8“).Offset(-3, -4).Select注意:你可以定义一变量,并且用 offset 来实现,例如:varFreightRowsCount = Range(“A1“).CurrentRegion.Rows.CountActiveCell.Offset(varFreightRowsCount, 0).Select选择整个工作表:Cells.Select选择当前单元格所在的区域 (遇到空行 / 空列即止 ):Range(“A1“).CurrentReg
3、ion.Select选择行或列:Rows(“1“).SelectColumns(“A“).Select或者:ActiveCell.EntireRow.SelectActiveCell.EntireColumn.Select选择相邻的多行/多列:Columns(“A:C“).SelectRows(“1:5“).Select选择不相邻的多行/多列:注意:和选择相邻的多行/多列不同,使用“Range“而不是“Columns/Rows“:Range(“A:A, C:C, E:F“).SelectRange(“1:1,5:6,9:9“).Select选择当前活动单元格向下至最后一个非空单元格:Range
4、(“A1“, Range(“A1“).End(xlDown).SelectRange(ActiveCell, ActiveCell.End(xlDown).Select选择当前活动单元格向上至第一个非空单元格:Range(“A32“, Range(“A32“).End(xlUp).SelectRange(ActiveCell, ActiveCell.End(xlUp).Select选择当前活动单元格向右至第一个非空单元格?注意:是 “xlTORight“而不是 “xlRight“Range(“A1“, Range(“A1“).End(xlToRight).SelectRange(ActiveC
5、ell, ActiveCell.End(xlToLeft).Select选择当前活动单元格向右至第 10 个单元格?Range(“A2“, Range(“A2“).Offset(0, 10).SelectRange(ActiveCell, ActiveCell.Offset(0, 10).Select选择当前活动单元格向左至第 10 个单元格?Range(“A20“, Range(“A20“).Offset(0, -10).SelectRange(ActiveCell, ActiveCell.Offset(0, -10).Select选择当前活动单元格向下至第 10 个单元格?Range(“a
6、2“, Range(“a2“).Offset(10, 0).SelectRange(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 而不是 Selec
7、tion.Resize(5, 2).SelectExcel 的宏不能记录移至当前行的第一个单元格的动作(即你按下“Home”键的动作),下面的语句则可以做到:ActiveCell.Offset(0, -ActiveCell.Column + 1).Select移至当前列的第一个单元格:ActiveCell.Offset(-ActiveCell.Row + 1, 0).Select关于 IfThen.EndIf如果只有一个条件及一个动作,你可以用以下语句:If Selection.Value 10 ThenSelection.Offset(1, 0) = 100End If或者更简单的:If S
8、election.Value 10 Then Selection.Offset(1, 0) = 100如果有两个条件及两个动作,你可以用下面的语句If Selection.Value 10 ThenIf Selection.Value = 12 ThenSelection.Offset(1, 0) = 100End IfSelection.Offset(1, 0) = 20End If关于 IfThen.And.EndIf当有双重条件和一个动作时,你可以用下面的语句:If Selection.Value = 10 And Selection.Offset(0, 1).Value = 20 Th
9、enSelection.Offset(1, 0) = 100End If关于 IfThen.Or.EndIf当有双重条件和一个动作时,你可以用下面的语句:If Selection.Value = 10 Or Selection.Offset(0, 1).Value = 20 ThenSelection.Offset(1, 0) = 100End If关于 IfThen.Else.EndIf当只有一个条件和两个动作时,你可以用下面的语句:If Selection.Value 10 ThenSelection.Offset(1, 0) = 100ElseSelection.Offset(1, 0)
10、 = 0End If关于 IfThenElseIf.EndIf当有不止一个条件,且每个条件都跟随不同的动作时,你可以用下面的语句:If Selection.Value = 1 ThenSelection.Offset(1, 0) = 10ElseIf Selection.Value = 2 ThenSelection.Offset(1, 0) = 20ElseIf Selection.Value = 3 ThenSelection.Offset(1, 0) = 30ElseIf Selection.Value = 4 ThenSelection.Offset(1, 0) = 40ElseIf
11、Selection.Value = 5 ThenSelection.Offset(1, 0) = 50End If关于 Select Case当你不得不测试很多条件,你可以用 Select Case 语句来代替 If ThenElseIf 。语法如下:Sub test()Select Case Selection.ValueCase Is = 85Selection.Offset(0, 1) = “A“Case Is = 75Selection.Offset(0, 1) = “B“Case Is = 65Selection.Offset(0, 1) = “C“Case Is = 50Selec
12、tion.Offset(0, 1) = “D“Case ElseSelection.Offset(0, 1) = “F“End SelectEnd 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.orSelect Case LCase(Selection.Value)orDo While LCase(Selection.Value) “TOTO“