VBA入门的基础语句-详解
选择一个工作表:
Sheets("Balance").Activate.
选择单元格:
Range("A1").Select
选择连续的单元格:
Range("A1:G8").Select
选择不连续的单元格:
Range("A1,B6,D9").Select
Range("A1,B6:B10,D9").Select
选择当前活动的工作簿:
ThisWorkbook.Activate
如果选择其他工作簿,注意该工作簿一定是打开的,并且不要忘记加上后缀“.xls” ,例如:
Windows("Totol.xls").Activate
选择一个工作表:
Sheets("Balance").Activate.
单元格间移动:
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 内容来自vba技术联盟
选择行或列:
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 本文来自vba技术联盟
选择当前活动单元格向右至第10个单元格。
Range("A2", Range("A2").Offset(0, 10)).Select
Range(ActiveCell, ActiveCell.Offset(0, 10)).Select
选择当前活动单元格向左至第10个单元格。
resize函数vbaRange("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
内容来自vba技术联盟
Excel的宏不能记录移至当前行的第一个单元格的动作(即你按下“Home”键的动作),下面的语句则可
以做到:
ActiveCell.Offset(0, -ActiveCell.Column + 1).Select
移至当前列的第一个单元格:
ActiveCell.Offset( -ActiveCell.Row + 1,0).Select
常用链接设置
1.Hyperlinks.Add Anchor:=Cells(1, 2), Address:="lhome/"
如设置第一页第5行第2列的单元格(B5)链接到第二页的A1
注意* : address是外部链接。subAddress是内部链接 _是尾连接符
Sheets(1).Activate
ActiveSheet.Hyperlinks.Add Anchor:=Cells(5, 2), Address:="", SubAddress:= _
Sheets(2).name & "!A1", TextToDisplay:=Sheets(2).name
2.B1=IF(A1="","",HYPERLINK("[Book1.xls]Sheet1!A1","YES"))
该方法用于添加一个 Hyperlink 对象到文档或所选区域中,并返回该对象。
Function Add(Anchor As Object,[Address As String],[SubAddress As String],[ScreenTip As String],[TextToDisplay As String],[Target As String]) As Hyperlink
参数说明
Anchor
Object 类型,必需。表示超链接的文本或图形。
Address
Variant 类型,可选。表示链接的地址。此地址可以是地址、Internet 地址或文件名。
SubAddress
Variant 类型,可选。表示链接的子地址。
ScreenTip
Variant 类型,可选。表示超链接的提示文本。
TextToDisplay
Variant 类型,可选。表示超链接的显示文本。
Target
Variant 类型,可选。表示加载超链接的框架或窗口的名称。
返回值
Hyperlink 类型
样例
' 本示例在选中区域添加一个超链接。 Sub AddExample() ThisDocument.Hyperlinks.Add Anchor:= _ Selection.Range, Address:="www.kingsoft" End Sub
关于If..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..EndIf
当有双重条件和一个动作时,你可以用下面的语句:
If Selection.Value = 10 And Selection.Offset(0,1).Value = 20 Then
Selection.Offset(1,0) = 100
End If
关于If..Or...EndIf
当有双重条件和一个动作时,你可以用下面的语句:
If Selection.Value = 10 Or Selection.Offset(0,1).Value = 20 Then
vba技术联盟,VBA教程、VBA学习、VBA编程
Selection.Offset(1,0) = 100
End If
关于If..EndIf
当只有一个条件和两个动作时,你可以用下面的语句:
If Selection.Value > 10 Then
Selection.Offset(1,0) = 100
Else
Selection.Offset(1,0) = 0
End If
关于If..Then..EndIf
当有不止一个条件,且每个条件都跟随不同的动作时,你可以用下面的语句:
If Selection.Value = 1 Then
Selection.Offset(1, 0) = 10
ElseIf Select
ion.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 vba技术联盟,VBA教程、VBA学习、VBA编程
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"
or
Select Case LCase(Selection.value)
or
DO WHILE LCase(Selection.value)<>"toto"
NOW()
NOW() 既是Excel 函数也是VBA 函数。
通过下面的语句,在打开工作簿时,单元格 "A1"就会显示为当前时间: vba技术联盟
Range("A1").Formula = "=Now()"
下面的语句则在执行后赋予单元格“A1”当前时间,该时间不会改变除非你再次执行语句。并且你每次打开工作簿后,单元格“A1”的值不会改变。
Range("A1").Value = Now()
UCase
当对输入的字符做判断时,我们无法知道用户输入的字符是大写还是小写,用LCase函数可以将其转化为大写:
If UCase(Selection.value)= "TOTO"
or
Select Case UCase(Selection.value)
or
DO WHILE UCase(Selection.value)<>"TOTO"
如何在vba中操作快捷键
整理答案如下:
问: 用VBA如何使快捷键失效,如使ctr+D(删除)失效?
'按a執行宏TEST
Application.OnKey "a", "TEST"
'恢復按a正常功能
Application.OnKey "a"
'按a不發生任何作業
Sub TEST3()
Application.OnKey "a", ""
End Sub
ctl+C: "^c"
ctl+V: "^v"
Alt+F4: "%{F4}"
PageUp:"{PgUp}"
PageDown"{:PgDn}"
更多的键代码:
{BACKSPACE} or {BS} Backspace
{BREAK} Break
Caps Lock {CAPSLOCK}
{CLEAR} Clear
Delete 或 Del {DELETE} 或 {DEL}
End {END}
~
(波形符) Enter
Enter(数字小键盘) {ENTER}
{ESCAPE} 或 {ESC} Esc
{F1} 到 {F15} F1 到 F15
{HELP} Help
Home {HOME}
{INSERT} Ins
Num Lock {NUMLOCK}
Page Down {PGDN}
{PGUP} Page Up
{RETURN} Return
{SCROLLLOCK} Scroll Lock
Tab {TAB}
向上键 {UP}
{DOWN} 向下键
{RIGHT} 向右
键
向左键 {LEFT}
也可指定与 Shift 和/或 Ctrl 和/或 Alt 组合使用的键。要指定与其他键组合使用的键,请使用下表。
要组合的键 在键代码之前添加
Shift +(加号)
Ctrl ^(乘幂)
Alt %(百分号)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论