excel VBA入门基础语句详解
发布时间:2022-03-21 13:21:56
选择一个工作表:
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
选择行或列:
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"


猜你喜欢
- 宏命令,对于只是应用下表格的用户来说是陌生的,但其实宏命令的功能之强大是值得大家学习的。工作表中很多数据都是由公式计算生成的,那么如何让别人
- 微星笔记本怎么升级Win11系统?Win11是一款由微软在6月24日发布的新版本操作系统,它相较于Win10来说做出了很多的改变,任务栏和开
- 如果一份word文档非常重要的话,一般都会进行加密处理,但是如何给word文档加密呢?这就让不少人犯难了,今天系统部落就给大家介绍word文
- Win10如何查看版本号?相信很多用户在电脑的使用中都只有注意到版本,却从来没注意过后面的版本号,对此今天小编就为大家带来Win10查看版本
- SmartExplorer.exe - SmartExplorer进程详解进程文件: SmartExplorer or SmartExplo
- 常识1:Excel 2007中不可不知的数字Excel 2007在数据处理、分析上较之前的版本有哪些优势呢?相信通过下表中的数字对比,大家对
- Word2010怎么压缩文档中的图片?这篇文章主要介绍了Word2010压缩文档教程,需要的朋友可以参考下在用word2010进行工作时,有
- 微软通常会推出新的Windows 10功能更新,以提供更好的性能、安全性和功能改进,因此一些还在使用Win10 20H2版本的用户想要升级到
- Win7系统中内置蓝牙功能应该如何开启?每个笔记本的主板都内置了蓝牙功能,是不需要额外添加蓝牙功能的,但是却有很多用户不知道应该如何开启蓝牙
- 在Excel中录入好数据以后就是统计数据,其中统计字数的功能也用得不少,下面是由小编分享的excel如何统计字数的教程,希望对你有用。exc
- Win7是很多用户都很喜欢的一个系统,因此有不少人会装上它,但是装上它用了一段时间发现总是会出现一些问题,最常见的就是Win7提示“本地连接
- 电脑用户反馈称,在右下角网络图标一直显示正在获取网络地址,而且等待一段时间后依然如此,可其他连接同一个路由器的电脑都可以正常上网,怎么办?心
- win10已正式发布一些时日,在用户使用中,用户也看出了win10的改进,同时,win10也存在着很大的问题。其中,win系统可以监控你使用
- 如何免费开通 Apple TV+除了需要购买今年发布的新款 iPhone 外,还需要开通一个外区的 Apple ID,接下来还要购买苹果礼品
- 苹果在今天凌晨发布了iOS 12.1.3 Beta 4,相信很多手快的小伙伴现在已经使用爱思助手一键升级到了iOS 12.1.3 Beta
- macOS的Fn键实用技巧,macOS高端使用技巧,不知道大家有没有发现,不管是Windows笔记本还是Mac都有一个Fn键,这个到底有什么
- 在Word中,选择一个字符后,连击两次工具条中的斜体“Ⅰ”按钮,则该字符格式不变。设置斜体的方法:1、选中需要设置为斜体的文字;2、单击开始
- 在工作或学习中,常常会碰到要使用网格线来进行编辑。但是WPS文字中默认的网格线有时不符合规格,怎么办?下面小编马上就告诉大家WPS文字网格线
- 细心的用户会发现,Win8系统每次开机都会弹出一个提示窗口,上面提示:启动C:windowssystem32configsystemprof
- 最近有用户反映说自己电脑更新win10 20H2系统之后出现网络无法连接的情况,影响了他们的正常生活和工作,不知道怎么处理这个问题令他们很苦