Excel VBA入门语句
来源:百度文库 编辑:神马文学网 时间:2024/04/29 04:10:15
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..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"
选择当前活动的工作簿:
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"
Excel VBA入门语句
Excel VBA入门语句
Excel VBA入门语句
Excel VBA入门语句1
Excel VBA入门的基础语句3
Excel VBA入门的基础语句(11111111111
Excel VBA入门的基础语句(1)
Excel VBA语句
Excel VBA语句集1
EXCEL VBA常用语句100句
Excel VBA 300语句集 - Office程序开发 - 办公软件学习网 - Po...
VBA语句集
gdfdfgdfExcel VBA语句集
Excel VBA Examples(2)
EXCEL VBA 基础
EXCEL VBA 基础
Excel VBA完全手册
Excel VBA Examples(2)
EXCEL VBA 基础qeq
EXCEL VBA 基础1
EXCEL VBA 基础11
EXCEL VBA 基础
EXCEL VBA 基础
Excel VBA排序算法