excel vba常用代码

2024-04-27 20:47

1. excel vba常用代码

Visual Basic for Applications(简称VBA)是新一代标准宏语言,是基于Visual Basic for Windows 发展而来的。它与传统的宏语言不同,传统的宏语言不具有高级语言的特征,没有面向对象的程序设计概念和方法。而VBA 提供了面向对象的程序设计方法,提供了相当完整的程序设计语言。VBA 易于学习掌握,可以使用宏记录器记录用户的各种操作并将其转换为VBA 程序代码。这样用户可以容易地将日常工作转换为VBA 程序代码,使工作自动化。 [1] 


数据类型

基本数据类型
即Primary Type Data,下述列表的括号内为字节数: 
Byte (1):无符号数类型,取值范围0-255
Boolean (2)
Integer(2)
Long (4)
Single (4)
Double (8)
Currency (8)
Decimal (14)
Date (8)
String
Object (4)
Variant (根据分配确定) [2] 

自定义的数据类型
相当于C语言的struct,例如: [2] 
Type 自定义类型名 元素名 As 类型 … [元素名 As 类型] End Type

数组
Option Base 0 :数组索引值从0开始 [2] 
Option Base 1 :数组索引值从1开始
Dim MyArray(10) :声明一个数组变量,10是最大的可用的数组索引值
MyArray(5) = 101 :给数组的元素赋值
Dim Data(10,5) :声明一个二维数组变量
Data(1,1) = "A001" :给数组元素赋值
Dim cArr(-11 To 20, 1 To 3) As String :声明一个数组,定义数组索引值的上下界
Dim dArr() As String :声明动态数组
ReDim dArr(0 To 5, 1 To 2) :改变动态数组的尺寸默认把原数据清除。如果保留原来的数据,必须加上参数
Preserve:使用Preserve参数时只能改变最后一位的大小
If UBound(vTemp) = -1 Then:判断数组变量vTemp是否为空数组
End If Erase MyArrar, Data Erase语句清除数组元素,释放变量占用的空间 [2] 

常量
编辑

系统定义常量
系统定义常量有3个:True、False和Null。 [4] 

固有常量
固有常量是编程时引用的对象库定义的常量。所有固有常量都可以在宏或VBA代码中使用。通常,固有常量通过前两个字母来指明定义该常量。来自VB库的常量则以“vb”开头。来自Access的常量以“ac”开头。可以使用对象浏览器来查看所有对象库中的固有常量列表。 [4] 
在VBA中,常量的数据类型有整型、长整型、单精度型、双精度型、字节型、货币型、字符型、日期型和逻辑型。一个整型数据就是一个整型常量,一个长整型数据就是一个长整型常量。例如,12%、-1%是整型常量,32768&、10000000&是长整型常量,-2.5 1、3.14是单精度实型常量,3.1415926#是双精度实型常量,China、Shanghai是字符型常量,#07/13/2001 11:45PM#是日期常量,由符号 “ # ” 将字符括起来。 [4] 

符号常量
可以自行定义的常量即符号常量,必须先定义,后使用。可见,需要声明的常量都是符号常量。 [4] 
基本语法格式:

1   [ Publicr/ Private] Const  常量名[As  类型]=表达式   
如:Global Const 符号常量名称 = 常量值 [4] 
语句功能:
定义一个符号常量,并将指定表达式的值赋给符号常量。 [4] 
语句说明如下: [4] 
1)“常量名”指定符号常量的名字。符号常量名可以由字母、数字和下画线组成,但只能以字母开头,不能含有空格。 [4] 
2)“表达式”指定符号常量的值。该表达式通常由数值型、字符型、逻辑型或日期型数据以及各种运算符组成,但在表达式中不能出现变量和函数。 [4] 
3) public用来表示这个常量的作用范围是整个数据库的所有模块。 [4] 
4) private则表示这个常量只在使用该声明常量语句的模块中起作用。 [4] 
说明:
1)除用户定义的符号常量外,VBA还提供了许多符号常量,我们可以直接使用。 [4] 
2)对数码比较长,并且在程序中多次使用的常量,通常使用符号常量代替。运行程序时,系统自动把程序中的所有符号常量换为赋给它的值。 [4] 

变量
编辑
与常量一样,变量也是一块内存空间,用于保存程序运行过程中可能变化的数据。变量的名称是用户定义的一个标识符。 [5] 
在代码中需要使用该变量时,只需引用相应的标识符即可,而不用管变量当前的值具体是什么。 [5] 

声明
与用户自定义的常量相似,变量在使用之前都需要声明,在VBA中声明变量的语法格式有以下几种: [5] 
关键字变量名 AS 数据类型
关键字变量1,变量2 ... 变量n AS 数据类型
关键字变量1 AS 数据类型,变量2 As 数据类型, ... ,变量n AS数据类型
在第二种语法格式中, “变量n”的数据类型为AS关键字后定义的数据类型,而“变量1”、“变量2”、…的数据类型为变体型。 [5] 
在VBA中,可用Dim、Private、Public和Static这4个关键字来声明变量,使用不同关键字声明的变量其含义也有所不同。 [5] 
◆ 利用Dim关键字声明变量:Dim关键字主要用来在内存中分配一块空间,并为该空间命名,是VBA中声明变量最常用的关键字。使用Dim关键字声明的变量只能在当前过程或模块中使用。 [5] 
◆ 利用Private关键字声明变量:Private关键字用于在类模块中声明一个私有变量,它只能在当前的类模块中使用。当定义变量的位置同处于类模块中时,其使用效果与使用Dim关键字定义的变量相同。 [5] 
◆ 利用Public关键字声明变量:利用Public关键字声明的变量可以在程序的任何地方调用,而与声明变量的位置无关。 [5] 
◆ 利用Static关键字声明变量:Static关键字用于声明静态变量,即变量的值在整个代码运行期间都能被保留。 [5] 

赋值
变量在使用时还需要对其进行赋值。在VBA中对变量进行赋值可通过 “ = ” 符号或 “ Set ” 关键字进行。通过 “ = ” 符号对变量赋值的语法格式有以下几种。 [5] 
变量名=数据
变量1=变量2 运算符 数据
变量1=变量2 运算符 变量3 … 运算符 变量n
如果在定义变量时指定了变量的数据类型,则为变量所赋的值也必须是该数据类型的值。如果变量定义为Integer类型,而在赋值时却给了变量一个String类型的数据,则在编译运行的过程中将弹出错误弹框。 [5] 

运算符
编辑
运算符是在程序中执行计算功能的某些特殊符号,它是程序代码的重要组成部分。在程序代码中,运算符不能单独使用,必须与其操作数共同组成表达式后才具有运算意义。VBA中的运算符包含算术运算符、连接运算符、比较运算符和逻辑运算符等。 [4] 

算术运算符
算术运算符主要用于执行四则运算,仅用算术运算符连接起来的表达式称为算术表达式。算术运算符及其作用与示例如表所示。 [5] 


例子


名称


结果



-$a
   取反
   $a 的负值。
   

$a + $b
   加法
   $a 和 $b 的和。
   

$a - $b
   减法
   $a 和 $b 的差。
   

$a * $b
   乘法
   $a 和 $b 的积。
   

$a / $b
   除法
   $a 除以 $b 的商,允许小数。
   
$a \ $b    除法    $a 除以 $b 的商,结果取整。    

$a Mod $b
   取余
   $a 除以 $b 的余数
   
注意:
在执行算术运算时,运算符两侧操作的数据类型必须相同,否则会出现“类型不匹配”的错误提示。当“+”运算符左右两侧都是字符串类型的操作数时,执行的是连接运算,如表达式“"Pass+"word"的计算结果为字符串“ PassWord ”。 [5] 

连接运算符
连接运算符的作用是将运算符两侧的操作数连接成一个数,其操作数的数据类型通常都为String类型。VBA中的连接运算符有“&”和“+”两种,由于使用“+”执行连接运算时,容易与加法运算混淆,所以通常都采用“&”进行连接运算。 [5] 

比较运算符
比较运算符可以对运算符两侧的操作数执行比较运算,其返回结果为Boolean类型的True或False。比较运算符的操作数通常为具体的数值,当操作数为字符串或其他符号时,是根据该符号的ASCII码进行比较的。VBA中的比较运算符及其作用与示例如表所示。 [5] 


例子


名称


结果



$a = $b
   等于
   TRUE,如果 $a 等于 $b。
   

$a  $b
   不等
   TRUE,如果 $a 不等于 $b。
   

$a < $b
   小于
   TRUE,如果 $a 严格小于 $b。
   

$a > $b
   大于
   TRUE,如果 $a 严格大于 $b。
   

$a <= $b
   小于等于
   TRUE,如果 $a 小于或者等于 $b。
   

$a >= $b
   大于等于
   TRUE,如果 $a 大于或者等于 $b。
   

逻辑运算符
逻辑运算符用于对运算符两侧的操作数执行逻辑运算,参与逻辑运算的操作数本身可以是逻辑表达式(表达式的最终结果为True或 False),也可以是算术表达式(表达式的最终返回值为0或非0)。 [5] 
在逻辑运算中,数值0与逻辑值 False相同,表示逻辑假;非0数值与True相同,表示逻辑真。逻辑运算符及其含义与示例如表所示。 [5] 


例子


名称


结果



$a and $b
   And(逻辑与)
   TRUE,如果 $a 与 $b 都为TRUE。
   

$a or $b
   Or(逻辑或)
   TRUE,如果 $a 或 $b 任一为TRUE。
   

$a xor $b
   Xor(逻辑异或)
   TRUE,如果 $a 或 $b 同位相异。
   

Not(1>2)
   Not(逻辑非)
   TRUE。
   

(1>2) Eqv (1>2)
   两个操作数同为假,返回False;两个操作数同为真,返回True;两个操作数一真一假,返回False
   TRUE。
   

21 Imp 3<5
   运算符左右同为真,返回True;左右同为假,返回True;左真右假,回返 False;左假右真,返回True
   TRUE。
   

语法结构
编辑

if 语句

1   if 条件1 then   语句1elseif 条件2 then   语句2elseif ...    ...else   语句nend if   

Select Case 语句

1   Select Case 表达式   Case 表达式列表1       语句1   Case 表达式列表2       语句2       ...   Case 表达式列表n       语句nEnd Select    
其中的表达式列表可以为: [5] 
表达式 例: "A"
用逗号分隔的一组枚举表达式例:2,4,6,8
表达式1 To 表达式2 例:60 To 100
Is 关系运算符表达式 例:Is < 60

Do...Loop 语句

1   Do While或Until 条件   语句块1   Exit Do   语句块2Loop   

For...Next语句

1   Do   语句块1   Exit Do   语句块2Loop While或Until 条件   

For Each … Next语句

1   For 循环控制变量=初值To 终值Step 步长   语句块 ‘Exit For语句可以跳出循环体Next   

跳出本次循环的continue语句

1   For 循环控制变量=初值 To 终值 Step 步长    Do '用于模拟continue        语句块         If 条件 Then Exit Do '用于模拟continue        语句块     Loop While False '用于模拟continue Next   

With语句

1   With 对象引用   语句块End With   

On Error语句

1   On Error Goto 出错处理语句的label '跳转到出错处理语句   
或

1   On Error Resume Next '遇到错误,不管错误,继续往下执行   

具有控制作用的函数
If(条件式,表达式1,表达式2) [5] 
Switch(条件式1,表达式1,[条件式2,表达式2[,...,条件式n,表达式n]])
Choose(索引式,选项1[,选项2,...[,选项n]]) '这是基于1的索引

其他语句
编辑

注释语句
使用REM或者单引号开始的行。 [6] 

语句的连写与续行
如果一行包括多条语句,用冒号分割各个语句。跨多行的语句,在行末用“空格加下划线”表示续行 [6]  。

过程与函数
编辑

12   Sub 过程名(参数表)    语句块    Exit Sub    语句块End Sub     

1   Function 函数名(参数表) As Type   语句块   函数名=表达式   Exit FunctionEnd Function   
可以是Private、Public、Friend、Static等修饰。 [6] 
调用函数/过程时,可以加括号或者不加括号。如果调用表达式作为一行的一部分,那么必须用参数,例如函数调用的返回值赋给变量。 调用过程时, 可以使用/不使用call关键字。使用call语句调用过程,如果无参数,则不加括号;如果有参数,必须加括号。如果调用时用括号包住单个参数,则该参数强行按值传递。需要特别注意,不用call不加括号的调用,形参与实参是传值(passed by value)而不是传引用(passed by reference),这会导致一些对象的方法调用失败。例如: [6] 

1   Dim cn As ADODB.Connection    Set cn = CurrentProject.Connection    Dim rs As New ADODB.Recordset        rs.Open "SELECT * FROM myTable" , cn    Dim ExcelApp As New Excel.Application    Dim ExcelWst As Worksheet    Set ExcelWst = ExcelApp.Workbooks.Add.Worksheets(1)    ExcelWst.Range("A2").CopyFromRecordset(rs) '失败,无法执行该行    ExcelWst.Range("A2").CopyFromRecordset rs  '可成功执行该行   

常用内置函数
编辑
VBA的常用内置函数: [5] 
MsgBox
InputBox
舍入函数:Fix 向0取整,Int向下取整, Round四舍五入
Rnd: 返回0-1内的单精度随机数
字符串函数: [5] 
Filter:对字符串的一维数组的过滤
InStr([Start, ],[, Compare])与InStrRev: 查找子串
Len:字符串长度
Join:连接一维数组中的所有子字符串
Left,Right,Mid: 截取子字符串
Space(数值) :生成空格字符串
Ucase,Lcase:大小写转换函数
Ltrim, Rtrim,Trim :删除首尾空格
Replace
Split:分割一个字符串成为一维数组
StrComp:字符串比较
StrConv:字符串转换
String(number, character):制定字符重复若干次
StrReverse
日期/时间有关函数: [5] 
Year, Month, Day, WeekDay,Hour,Minute,Second: 截取日期时间分量
DateAdd: 日期/时间增量函数
DateDiff(,,[,W1][,W2])日期/时间的距离函数
DatePart(,[,w1][,w2])时间分割函数
DateSerial(,,) 合成日期;DateValue(“字符串表达式”)返回日期;
Date,Time,Now,Timer: 返回日期时间
DateValue
TimeSerial:由时间序列得到时间对象
TimeValue:由时间字符串得到时间对象
Weekday:获得日期的周几
WeekdayName
转换函数:CBool、CByte、CCur、 CDate、 CDbl、CDec、CInt、 CLng、CLngLng、CLngPtr、 [5]  CSng、CStr、CVar、CVErr、Asc()返回第一个字符的Ascii编码值、Chr(ASCII码)返回字符、Hex、Oct、Str()返回字符串、Val(string)、Format、FormatCurrency、FormatDateTime、FormatNumber、FormatPercent、MonthName。
Nz(表达式或字段属性值[,规定值])如果是空,则返回0或者""或者函数的第二个参数值 [5] 
验证函数:isNumeric、isDate、isNull、isEmpty、IsArray、IsError、IsMissing、IsObject [5] 
数学函数:Abs、Sqr、Tan、Atn(即atan)、Sin、Cos、Exp(e为基的指数)、Log自然对数 [5] 
Array:构造一个Array对象 [5] 
CallByName: get or set a property, or invoke a method at run time using a string name. [5] 
控制流:Choose:类似于C语言的select语句、If相当于IF-ELSE语句、Switch [5] 
Command:获取命令行参数 [5] 
CreateObject:创建ActiveX对象
CurDir:返回指定驱动器的当前工作路径 [5] 
由基本数学函数导出的函数:Sec、Cosec、Cotangent、Cotan、Arcsin、Arccos、Arcsec、Arccosec、Arccotan、HSin、HCos、HTan、HSec、HCosec、HCotan、HArcsin、HArccos、HArctan、HArcsec、HArccosec、HArccotan、LogN
DoEvents:暂时把CPU控制权交回给系统 [5] 
Environ:返回环境变量的值 [5] 
文件操作: [5] 
Dir:返回满足条件的所有文件、目录的名字
EOF
FileAttr
FileDateTime
FileLen
FreeFile Function
GetAttr:返回文件、目录的属性值
Input:读取文件
Loc:文件指针位置
LOF:文件打开时的指针位置
Seek:文件指针定位
Spc:使用Print做position output
Tab:用于Print函数
Error:错误号对应的错误消息 [5] 
Windows Registry中的数据:GetAllSettings、SaveSetting、DeleteSetting、GetSetting [5] 
GetObject:ActiveX组建的引用 [5] 
IMEStatus:返回当前Input Method Editor (IME) [5] 
Macintosh平台:MacID、MacScript [5] 
金融函数: [5] 
DDB:使用double-declining balance计算贬值
FV:计算固定利率的年金
IPmt:计算利率
IRR:计算利率
MIRR:计算利率
NPer:计算周期数
NPV:计算net present value
Pmt:计算支付数
PPmt:计算本金支付数
PV:计算present value
Rate:利息率
SLN:straight-line depreciation
SYD:计算sum-of-years' digits depreciation
Partition:返回字符串,表示一个数值名字落在各个range内。常用于SQL select语句 [5] 
QBColor:颜色值 [5] 
RGB:颜色值 [5] 
TypeName:得到变量的类型名 [5] 
VarType:得到变量的类型数 [5] 

excel vba常用代码

2. excel中怎么使用vba

Excel中的VBA代码需要在VBE窗口是使用(具体请看下面详细分析)

Excel版本参考:2010
1、ALT+F11,进入VBE对话框
2、右击-插入-模块
3、输入代码(使用已有代码,直接复制粘贴进入即可)
4、按F5运行或者点击三角按钮运行代码
5、查看效果

3. excel中vba怎么用

1
打开 Microsoft Office Excel 2007,点击 “开始” ->“Excel 选项”。 


2
在弹出的对话框中,选择“常规”选项卡,并在右侧点选“在功能区显示‘开发工具’选项卡”,并单击“确定"。


3
在单元格A1中输入“弧度”,单元格B1中输入“角度”,单元格A2中输入“3.14”,然后在单元格B2中输入公式"=DEGREES(A2)"在按下回车后,该单元格输出结果为179.9087477。
注:DEGREES函数的作用是将弧度转化为角度。


4
接下来,我们用VBA实现同样的功能。点击“开发工具”选项卡,单击“Visual Basic”,启动Visual Basic编辑器。


5
在“Microsoft Excel 对象”上点鼠标右键,依次点击“插入” -> “模块”,创建“模块1”,并在该模块中输入内容:
Sub 转换()
 MsgBox Application.WorksheetFunction.Degrees(3.14)
End Sub
点击“运行子过程/用户窗体”按钮,在弹出的对话框中选择“转换”,然后点击“运行”按钮。


6
程序弹出对话框,结果与在Excel中利用公式输出的结果一样,只是有效数字的位数不一样,这可以根据需要加以取舍。


7
总结:在进行VBA编程时,可以通过WorkSheetFunction方法来实现对Excel函数的引用,借此,可以方便我们对函数的引用,避免花费更多的时间在自定义函数上,有效的提高了工作效率。

excel中vba怎么用

4. Excel vba是什么

Excel_VBA到底是个啥!

5. Excel vba是什么

故障分析:excel VBA其实就是大家代码编辑程序,有的人被人认为是宏,但是excel vba是包括宏程序的。下面还是一起来看看excel vba是什么?如何打开?
  
    
   
       一、excel vba是什么?
  
 excel VBA中的vba是Visual Basic For Application的缩写。一般用来实现简单或中等的办公自动化应用。因为易学并且能很好的被office系列应用程序支持,因此得到了很广泛的应用。
  
 二、excel vba怎么打开?
  
 先安装一个vba编辑器,在“Office共享功能”中有“Visual Basic for Application”,要安装。启动Excel后,选左上角的大点,Excel选项-》信任中心-》信任中心设置-》宏设置-》“禁用宏,并发出通知”。
  
    
   
       提示:这时在打开有VBA的Excel,编辑栏在侧会有提示,一定要启用,否则无法编辑和使用VBA。
  
 新手必知:打开Excel出现宏怎么解决?
  
 需要进入VBA编辑器,就按住alt+F11即可打开就可以自己写代码了,也可以在这里阅读已有的代码。 如果是宏,可以直接Alt+F8 选择执行即可打开运行。
  
 三、excel vba的用途:
  
 简单地说,就是模拟人工操作,完成一些挺繁琐的事情。比如:从网上复制到Word的文章,格式很乱,你就可以自己写一个宏,来自动完成整理工作,而不是人工一点一点地改,那样太累了。主要功能用途如下:
  
 1. 使重复的任务自动化
  
 2. 自定义EXCEL工具栏,菜单和界面
  
 3. 简化模板的使用
  
 4. 自定义EXCEL,使其成为开发平台
  
 5. 创建报表
  
 6. 对数据进行复杂的操作和分析
  
 以下就是Visual Basic for Application的一些部分代码用途案例:
  
 1、本示例为设置密码窗口 (1)
  
 If Application.InputBox("请输入密码:") = 1234 Then [A1] = 1 '密码正确时执行
  
 Else: MsgBox "密码错误,即将退出!" '此行与第2行共同设置密码 End If
  
 2、本示例为设置密码窗口 (1)
  
 X = MsgBox("是否真的要结帐?", vbYesNo) If X = vbYes Then Close
  
 3、本示例为设置工作表密码
  
 ActiveSheet.Protect Password:=641112 ' 保护工作表并设置密码
  
 ActiveSheet.Unprotect Password:=641112 '撤消工作表保护并取消密码 '
  
 4、本示例关闭除正在运行本示例的工作簿以外的其他所有工作簿,并保存其更改内容 。
  
 For Each w In Workbooks
  
 If w.Name ThisWorkbook.Name Then w.Close SaveChanges:=True End If Next w '每次打开工作簿时,
  
 5、本示例都最大化 Microsoft Excel 窗口。 Application.WindowState = xlMaximized '
  
 6、本示例显示活动工作表的名称。
  
 MsgBox "The name of the active sheet is " & ActiveSheet.Name '
  
 7、本示例保存当前活动工作簿的副本。
  
 ActiveWorkbook.SaveCopyAs "C:TEMPXXXX.XLS"
  
 总结:VBA究竟是什么?更确切地讲,它是一种自动化语言,它可以使常用的程序自动化,可以创建自定义的解决方案。
  
 比如有个工作表,经常需要更新数据,打开数据源,调整格式,添加运算公式,等等相对固定重复的工作,就可以使用Marco宏。
  
 某天当你工作的时候,点工具-宏-录制,然后从头到尾做一次,VBA会将你的所有动作写成一个宏程序。这个宏程序有基本的语言常识都可以弄懂,但是也会有许多无用的语句。至少,以后运行宏可以节约你的重复工作时间。其次进一步,学习条件、循环、变量等高阶用法。多学多问多实践就能学好的。

Excel vba是什么

6. excel表格vba编程的方法步骤

      在  Excel  的编辑中,利用到VBA编程的几率是很高的,因此如果工作上用到Excel还没学会VBA的朋友,不妨学习一下。接下来是我为大家带来的excel表格vba编程教程,希望对你有用。
          excel表格vba编程教程          VBA编程步骤1:首先打开excel visual basic窗口,可以调试或试运行程序,打开excel—点击”工具“—"宏(M)"—“visual basic编辑“,红框内就是代码编辑区域
                excel表格vba编程教程图1           VBA编程步骤2:首先我们得找到读取数据的源文件,可以通过自动寻找路径名+文件名来打开
         PS:语法与VB相似,且可以选中英文词按F1查看具体语法说明
               excel表格vba编程教程图2          VBA编程步骤3:其次,读取我们需要的数据,并作简单赋值
               excel表格vba编程教程图3          VBA编程步骤4:根据取得的数值,我们作一些简单运算,如求环比,同比等
               excel表格vba编程教程图4          VBA编程步骤5:然后我们对一些数据作格式处理,比如保留小数点后两位或一位
               excel表格vba编程教程图5

7. excel vba是什么

Excel_VBA到底是个啥!

excel vba是什么

8. excel中vba代码的问题,请教一个思路即可

1、将A列分列分开(分成四列)
2、D列用公式就可以得到结果(if 判断A、B、C三种计算公式)