首页 范文大全 古典文学 职场知识 中国文学 公文书信 外国名著 寓言童话 百家讲坛 散文/诗歌 美文欣赏 礼仪知识 民俗风情
  • 工作总结
  • 工作计划
  • 心得体会
  • 竞聘演讲
  • 会议发言
  • 爱国演讲
  • 就职演说
  • 开业开幕
  • 思想学习
  • 征文演讲
  • 经验材料
  • 述职报告
  • 调研报告
  • 工作汇报
  • 年终总结
  • 申报材料
  • 学习体会
  • 企划方案
  • 活动方案
  • 技巧经验
  • 模板范例
  • 思想宣传
  • 经济工作
  • 工作报告
  • 组织人事
  • 反腐倡廉
  • 慰问贺电
  • 先进事迹
  • 思想汇报
  • 入党申请书
  • 党会发言
  • 先进性教育
  • 入团申请书
  • 个人简历
  • 演讲稿
  • 调查报告
  • 实习报告
  • 和谐社会
  • 观后感
  • 读后感
  • 作文范文
  • 自我鉴定
  • 讲话稿
  • 自查报告
  • Excel,VBA,VB语法基础介绍

    时间:2021-02-26 20:08:42 来源:蒲公英阅读网 本文已影响 蒲公英阅读网手机站

    相关热词搜索:语法 基础 介绍

     Excel VBA

     VB 语法基础 介绍

     目标 了解 VB 基本语法规则 可以编写简单的代码

     一切从宏开始

     录制的宏是由 Sub 定义的子过程 [ Private | Public | Friend] [ Static] Sub name

     [( ( arglist ) )]

     [ statements ] [ Exit Sub] [ statements ] End Sub

     Sub Macro1()

     With Selection.Font

      .Color = -16776961

      .TintAndShade = 0

      End With End Sub

     将子过程修改为有返回值的函数

     [ Public | Private | Friend] [ Static] Function name

     [( ( arglist ) )] [ As type ] [ statements ] [ name

     = = expression ] [ Exit Function]

     [ statements ] [ name

     = = expression ] End Function

     ‘ 返回指定单元格的字体颜色 Funcion GetFontColor(Target As Range) As Long Dim lCellColor As Long

      If IsNumeric(Target.Value) Then

      lCellColor = Target.Font.Color

      End If

      GetFontColor = lCellColor End Sub

     几何运算函数

     ‘ 计算圆的面积 Function CircleArea(R As Double) As Double Const PI As Double = 3.14159265358979

      CircleArea = PI * R ^ 2 End Function

     子过程的调用方式

     ‘ 自动计算当前单元格为半径的圆的面积 Sub AutoCalculateCircleArea()

      ActiveCell.Offset(0,1).Value = CircleArea(ActiveCell.Value) End Function

     变量和常量、数据类型

     变量声明方式

     Public | Private | Friend | Dim | Static [ WithEvents] varname [( ([ subscripts ]) )] [ As

     [ New] type ] [, ,[ WithEvents] varname [( ([ subscripts ]) )] [ As

     [ New] type ]] . . .

     Dim lLoopRow As Long

     常量声明方式

     [ Public | Private]

     Const constname

     [ As type ] = = expression 基本数据类型

     字符串型、数值型数据、字节型、货币性、对象型、日期型、布尔型和变体数据类型 String, Byte, Integer, Long, Single, Double,

     Currency, Object, Date, Boolean, Variant

     命名规则 ⑴ 名字只能由字母、数字和下划线组成; ⑵ 名字的第一个字母必须是英文字母,最后一个字符可以是类型说明符; ⑶ 名字的字符的最长长度是 255 个; ⑷ 不能使用 VBA 的保留字为变量名 ⑸ 名字中的字母不区分大小写。

     ⑹ 同一范围内命名必须唯一,所谓的作用域就是变量的作用范围。

     变量 的 赋值

     [ Let] | Set varname = expression 运算符与表达式

     算术运算符

     运算

     运算符

     表达式举例

     说明

     幂 ^ X ^ Y

     取负 - -X

     乘法 * X * Y

     浮点除法 / X / Y

      整数除法 \ X \ Y 截去小数,不舍入 取模 Mod X Mod Y

     加法 + X + Y

     减法 - X - Y

     连接运算符

     运算

     运算符

     表达式举例

     说明

     连接 & "Hello" & " World" 返回"Hello World" 如果 expression 不是字符串,则将其转换成 String 变体。如果两个表达式都是字符串表达式,则 result 的数据类型是 String;否则 result 是 String 变体。如果两个表达式都是 Null,则 result 也是 Null。但是,只要有一个 expression 是 Null,那么在与其它表达式连接时,都将其作为长度为零的字符串 ("") 处理。任何 Empty 类型表达式也作为长度为零的字符串处理。

     连接 + "Hello" & " World" 返回"Hello World" 在使用 + 运算符时有可能无法确定是做加法还是做字符串连接。为避免混淆,请使用 & 运算符进行连接,并且改进程序代码的可读性。

     比较运算符

     测试关系

     运算符

     表达式举例

     等于 = X=Y

     测试关系

     运算符

     表达式举例

     不等于 <>或>< X<>Y 小于 < X<Y 大于 > X>Y 小于等于 <= X<=Y 大于等于 >= X>=Y 比较样式 Like "BAT123khg" Like "B?T*" 返回 True 比较对象变量 Is 使用 Is 运算符来比较两个对象引用

     逻辑运算符

     逻辑

     运算符

     表达式举例

     说明

     非 Not Not X 原来为真,否定为假 与 And X And Y 其一为假,结果为假 或 Or X Or Y 其一为真,结果为真 异或 Xor X Xor Y 不同为真,相同为假 等价 Eqv X Eqv Y 相同为真,不同为假 蕴含 Imp X Imp Y X 为真,Y 为假,结果为假

     X X

     Y Y

     Not X

     X And Y Y

     X Or Y Y

     X Xor Y Y

     X EqvY

     X Imp Y Y

     -1 -1 0 -1 -1 0 -1 -1 -1 0 0 0 -1 -1 0 0

     0 -1 -1 0 -1 -1 0 -1 0 0 -1 0 0 0 -1 -1

     表达式执行顺序

     ⑴ 首先执行函数运算。

     ⑵ 其次算术运算,算术运算符优先顺序:幂、取负、乘和浮点除、整除、取模、加和减、连接 ⑶ 再次关系运算。

     ⑷ 最后进行逻辑运算,优先顺序为:Not、And、Or、Xor、Eqv、Imp。

     注意:

     ① 在运算中,括号内的运算的优先于括号外的运算。

     ② 字符串连接运算符不是算术运算符,它的优先级高于比较运算符,低于算术运算符。

     ③ Like 和比较运算符的优先顺序相同。进行模式匹配处理,应该注意?和*两个通配符。Is 是对象比较运算符,它不考虑对象的值,只是针对两个对象是否参照了相同的对象。

     ④ 当使用幂时,负号优先,例如:4^-2,表示 4 的负 2 次方。

     表达式书写的注意事项

     ⑴ 乘号(*)不能省略,也不能用“· ”代替。

     ⑵ 一般情况下,不允许两个运算符相连,应当用括号隔开。

     ⑶ 表达式中的括号只能是圆括号。

     ⑷ 幂运算符表示自乘,如 A^B 表示 A 的 B 次方,即 B 个 A连乘。当 A 和(或)B 不是单个常量或变量,要用括号括起来。如(A+B)^(C+D)

     A VBA 的控制结构

     选择控制结构

     f 1 If 选择结构

     If condition

     Then [ statements ][ Else elsestatements ] 或者,可以使用块形式的语法:

     If condition

     Then [ statements ] [ ElseIf condition-n

     Then [ elseifstatements ] ... [ Else [ elsestatements ]] End If (1 1 )

     I If f … Then …

     单向选择结构。

     Public Sub IfDemo1() "If…Then…示例 Dim dPoints As Double

      dPoints = InputBox("请输入得分!", "选择结构示例")

      If dPoints >= 320 Then Call MsgBox("达到或超过分数线,录取了!", vbExclamation, "If…Then…示例") End Sub

     (2 2 )

     If … Then … Else …

     双向选择结构。

     条件表达式 (condition)?语句块 (statements)

     真(True)

     假

      简单示例

     Public Sub IfDemo2() "If…Then…Else…简单示例 Dim dPoints As Double

      dPoints = InputBox("请输入得分!", "If…Then…")

      If dPoints >= 320 Then

      Call MsgBox("达到或超过录取分数线,录取了!", vbExclamation, "If…Then…示例")

      Else

      Call MsgBox("没有超过录取分数线,没被录取!", vbExclamation, "If…Then…示例")

      End If End Sub

     嵌套示例 条件表达式 (condition)? 语句块 (statements)

     语句块 (elsestatements)

     真假

      Public Sub IfDemo3() "If…Then…Else…嵌套示例 Dim dPoints As Double

      dPoints = InputBox("请输入得分!", "选择结构示例")

      If dPoints >= 550 Then

      Call MsgBox("达到或超过本科分数线,本科录取了!", vbExclamation, "If…Then…Else…嵌套示例")

      Else

      If dPoints >= 320 Then

      Call MsgBox("达到或超过专科分数线并且没到本科分数线,专科录取了!", vbExclamation, "If…Then…Else…嵌套示例")

      Else

      Call MsgBox("没有超过录取分数线,没被录取!", vbExclamation, "If…Then…Else…嵌套示例")

      End If

      End If End Sub

     组合示例

      Public Sub IfDemo4() "If…Then…Else…组合示例 Dim dPoints As Double dPoints = InputBox("请输入得分!", "选择结构示例")

      If dPoints >= 550 Then

      Call MsgBox("达到或超过本科分数线,本科录取了!", vbExclamation, "If…Then…Else…组合示例")

      End If

      If dPoints >= 320 And dPoints < 550 Then

      Call MsgBox("达到或超过专科分数线并且没到本科分数线,专科录取了!", vbExclamation, "If…Then…Else…组合示例")

      End If

      If dPoints < 320 Then

      Call MsgBox("没有超过录取分数线,没被录取!", vbExclamation, "If…Then…Else…组合示例")

      End If End Sub

     (3 3 )

     If … ElseIf … Else

     属于嵌套多重判断结构。

     Public Sub If…ElseIf…Else() "If…ElseIf…Else 示例 Dim dPoints As Double dPoints = InputBox("请输入得分!", "选择结构示例")

      If dPoints >= 550 Then

      Call MsgBox("达到或超过本科分数线,本科录取了!", vbExclamation, "If…ElseIf…Else 示例")

      ElseIf dPoints >= 320 Then

      Call MsgBox("达到或超过专科分数线并且没到本科分数线,专科录取了!", vbExclamation, "If…ElseIf…Else 示例")

      Else

      Call MsgBox("没有超过录取分数线,没被录第一个判断条件表达式 语句块 (statements)

     语句块 (elseifstatements)

     真语句块 (elsestatements)

     第一个判断条件表达式 假真假

     取!", vbExclamation, "If…ElseIf…Else 示例")

      End If End Sub

     f 2 IIf 函数

     属于双向的选择结构.

      Public Sub IIfDemo() "IIf 函数示例 Dim dPoints As Double Dim sResult As String

      dPoints = InputBox("请输入得分!", "选择结构示例")

      sResult = IIf(dPoints >= 320, "达到或超过录取分数线,录取了!", "没有超过录取分数线,没被录取!") 条件表达式 (expr)

     返回 为真时的值或表达式 返回 为假时的值或表达式 真假

     Call MsgBox(sResult, vbExclamation, "IIf 函数示例") End Sub

     分支控制结构

     1 Select … Case 语句

     Select Case 语句功能根据表达式的值,来决定执行几组语句中的其中之一。

     Public Sub Select…Case() "Select…Case 示例 Dim dPoints As Double

      dPoints = InputBox("请输入得分!", "分支结构示例") 测试表达式 Case 条件 1 Case 条件 2 Case 条件 3 Case 条件 4 Case Else 条件 1 为 True 的语句块 条件 2 为 True 的语句块 条件 3 为 True 的语句块 条件 4 为 True 的语句块 其他条件都不成立 时所执行的语句块 False False False False True True True True

     Select Case dPoints

      Case 0 To 319.99

      Call MsgBox("没有超过录取分数线,没被录取!", vbExclamation, "Select…Case 示例")

      Case 320 To 549.99

      Call MsgBox("达到或超过专科分数线并且没到本科分数线,专科录取了!", vbExclamation, "Select…Case 示例")

      Case 550 To 700

      Call MsgBox("达到或超过本科分数线,本科录取了!", vbExclamation, "Select…Case 示例")

      Case Else

      Call MsgBox("非法输入,不能判断!", vbExclamation, "Select…Case 示例")

      End Select End Sub

     h 2 Switch 函数

     Switch(expr-1, value-1[, expr-2, value-2 _ [, expr-n,value-n]]) 计算一组表达式列表的值,然后返回与表达式列表中最先为 True 的表达式所相关的 Variant 数值或表达式

      e 3 Choose 函数

     Choose(index, choice-1[, choice-2, ... [, choice-n]]) 根据索引值(Index)来输出索引值数组中的对象

     循环控制结构

     r 1 For 循环

     (1)For…Next For counter

     = = start

     To end

     [ Step step ] [ statements ] 输入 Index IndexIndex Index输出 choice-1 输出 choice-2 输出 choice-3 Null False False False True True True 输入参数expr-1 为True expr-2 为True expr-3 为True 返回结果value-1 返回结果value-2 返回结果value-3

     [ Exit For] [ statements ] Next [ counter ]

     For i = 1 To 10

      For J = 1 To 10

      For K = 1 To 10

      ...

      Next K

      Next J Next i

     (2)For Each…Next For Each element

     In group

     [ statements ] 开始 循环变量=初值 循环变量>终结束 执行循环体 循环变量=循环变量+步长 True False

     [ Exit For] [ statements ] Next [ element ]

     e 2 While 循环

     While condition

     [ statements ] Wend 数组或集合的元素执行循环体 执行完毕 True False

      3 Do …p Loop 循环

     Do [{ While | Until} condition ] [ statements ] [ Exit Do] [ statements ] Loop 或 Do [ statements ] [ Exit Do] [ statements ] Loop [{ While | Until} condition ] 开始 计算 condition 条件为 True结束 执行 statements True False

     数组

     S(n) 其中 S 成为数组名,n 成为下标。使用下标时,必须将下标放在一对紧跟在数组名之后的圆括号中,如:S(5),不能是 S5、S5 或 S[5]等。在 Visual Baisc 中,一个数组中的元素可以是相同类型的数据,也可以是不同类型的数据。

     由具有一个下标的下标变量所组成的数组称为一维数组(也叫清单)。由具有两个或两个以上下标的下标变量所组成的数组称为二维数组或多维数组。

     Dim iMyArray(10, 10) As Integer iMyArray(1,1)=... Dim sArray() As Single ReDim sArray(9) sArray(1,1)=… ReDim Preserve sArray (UBound(sArray) + 10)

     变量生命周期

     模块、类中变量的声明方式 Public, Private, Static, Dim(Friend) 子过程参数如何定义

     常用函数

     测试函数

     函数

     说明

     IsNumeric( expression )

     返回

     Boolean 值,指出表达式的运算结果是否为数。

     IsDate( expression )

      返回

     Boolean 值,指出一个表达式是否可以转换成日期。

     IsEmpty(expression)

      返回 Boolean 值,指出变量是否已经初始化。

     IsArray(varname)

     返回

     Boolean 值,指出变量是否为一个数组。

     IsError(expression) 返回 Boolean 值,指出表达式是否为一个错误值 IsNull(expression)

     返回

     Boolean 值,指出表达式是否不包含任何有效数据

     (Null) 。

     IsObject(identifier)

     返回

     Boolean 值,指出标识符是否表示对象变量。

     IsMissing(argname) 返回 Boolean 值,指出一个可选的 Variant 参数是否已经传递给过程。

     数学函数

     函数

     说明

     Sin(number) 返回一 Double,指定参数的 sine(正弦)值。

     Cos(number) 返回一个 Double,指定一个角的余弦值。

     Tan(number) 返回一个 Double 的值,指定一个角的正切值。

     Atn(number) 返回一个 Double,指定一个数的反正切值。

     Log(number) 返回一个 Double,指定参数的自然对数值。

     Exp(number) 返回 Double,指定 e(自然对数的底)的某次方。

     Abs(number x) 返回参数的绝对值,其类型和参数相同。

     Int(number) 、Fix(number)

      都返回参数的整数部分,区别:t Int 将- -4 8.4 转换成- -9 9 ,而 x Fix 将- -4 8.4 转换成- -8 8

     Sgn(number)

     返回一个 Variant (Integer),指出参数的正负号。

     number 大于 0 返回 1 number 等于 0 返回 0 number 小于 0 返回-1 Sqr(number)

     返回一个 Double,指定参数的平方根 Rnd[(number)]

     返回 0 0- -1 1 之间的单精度数据,x x 为随机种子

     注意:

     ⑴ Sin、Cos、Tan 和 Atn 中的参数 number 表示一个以弧度为单位的角。一般参数是以角度给定,我们可以使用公式转换成弧度:1 度=π/180=3.1415926/180

     ⑵ Rnd 函数可以产生随机数,当应用程序反复使用随机数时,同一序列的随机数会反复出现,用 Randomize(x)语句可以消除这种情况。x 是整型数(即种子),可以省略。

     字符串函数

     函数

     说明

     Trim(string) 、Ltrim(string)、Rtrim(string)

     返回

     Variant (String) ,其中包含指定字符串的拷贝,没有前导空白

     (LTrim) 、尾随空白

     (RTrim) 或前导和尾随空白

     (Trim) 。

     Len(string | varname)

     返回

     Long ,其中包含字符串内字符的数目,或是存储一变量所需的字节数。

     Left(string, length)

     返回

     Variant (String) ,其中包含字符串中从左边算起指定数量的字符。

     Right(string, length)

     返回

     Variant (String) ,其中包含从字符串右边取出的指定数量的字符。

     Mid(string, start[, length])

     返回

     Variant (String) ,其中包含字符串中指定数量的字符。

     Ucase(string)

     返回

     Variant (String) ,其中包含转成大写的字符串。

     Lcase(string)

     返回转成小写的

     String 。

     Space(number) 返回特定数目空格的 Variant (String)。

     Asc(string) 返回一个 Integer,代表字符串中首字母的字符代码。

     Chr(charcode) 返回 返回 String,其中包含有与指定的字符代码相关的字符 。

     StrComp(string1,string2[,compare])

     返回

     Variant (Integer) ,为字符串比较的结果。

     StrConv(string,conversion, LCID) 返回按指定类型转换的 Variant (String)。

     Format(expression[,format[, firstdayofweek[, firstweekofyear]]])

     返回

     Variant (String) ,其中含有一个表达式,它是根据格式表达式中的指令来格式化的。

      转换函数

     函数

     说明

     CBool(expression)

     转换为 n Boolean 型。

     CByte(expression) 转换为 Byte 型。

     CCur(expression) 转换为 Currency 型。

     CDate(expression)

     转换为 e Date 型。

     CDbl(expression)

     转换为 e Double 型。

     CDec(expression) 转换为 Decemal 型。

     CInt(expression) 转换为 Integer 型。

     CLng(expression)

     转换为 g Long 型。

     CSng(expression) 转换为 Single 型。

     CStr(expression)

     转换为 g String 型。

     CVar(expression) 转换为 Variant 型。

     Val(string) 返回包含于字符串内的数字,字符串中是一个适当类型的数值。

     Str(number) 返回代表一数值的 Variant (String)。

     日期与时间

     函数

     说明

     Now

     返回一个

     Variant (Date) ,根据计算机系统设置的日期和时间来指定日期和时间。

     Date

     返回包含系统日期的

     Variant (Date) 。

     Time

     返回一个指明当前系统时间的

     Variant (Date) 。

     Timer 返回一个 Single,代表从午夜开始到现在经过的秒数。

     TimeSerial(hour,minute,second) 返回一个 Variant(Date),包含具有具体时、分、秒的时间。

     TimeValue(time) 返回一个包含时间的 Variant (Date)。

     DateDiff(interval,date1,date2[,firstdayofw返回 Variant(Long) 的值,表示两个指定日期间的时间间隔数目。

     eek[,firstweekofyear]])

     Second(time)

     返回一个 Variant(Integer) ,其值为 0 0到 到 9 59 之间的整数,表示一分钟之中的某个秒。

     Minute(time)

     返回一个 Variant(Integer) ,其值为 0 0到 到 9 59 之间的整数,表示一小时中的某分钟。

     Hour(time)

     返回一个 Variant(Integer) , 其值为 0 0到 到 3 23 之间的整数,表示一天之中的某一钟点。

     Day(date)

     返回一个 Variant(Integer) ,其值为 1 1到 到 1 31 之间的整数,表示一个月中的某一日。

     Month(date)

     返回一个 Variant(Integer) ,其值为 1 1到 到 2 12 之间的整数,表示一年中的某月。

     Year(date)

     返回 Variant(Integer) ,包含表示年份的整数。

     Weekday(date,[firstdayofweek])

     返回一个 Variant(Integer) ,包含一个整数,代表某个日期是星期几

    • 范文大全
    • 职场知识
    • 精美散文
    • 名著
    • 讲坛
    • 诗歌
    • 礼仪知识