VBA语法总结

Posted KL58

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VBA语法总结相关的知识,希望对你有一定的参考价值。

为了控制Excel,学了些VBA,总结下语法,下文分为五部分:

一、代码组织

二、常用数据类型

三、运算符

四、控制流

五、常用内置函数

一、代码组织

1.能写代码的地方有模块,类模块。

2.代码中可以写的成员有变量和常量,过程和函数。对成员的访问修饰符有public,private

3.写注释的方法有以单引号开头,以REM开头。

4.变量和常量声明的格式如下

变量

Dim <variable> As <type>

可以不声明,直接赋值使用

常量

Const <cst> as <type> = <value>

声明时需立即跟等号赋值

5.变量赋值的格式是

变量名=变量值

对普通类型

Set 变量名=变量值

对object 类型

6.过程和函数书写的格式是

过程

              Sub 过程名()

                ……

      End Sub

函数

Function 函数名(一堆变量)

……

      End Function

7.VBA是大小写不敏感的,即大写小写都被认为是小写。

8.可以用Debug.Print在立即窗口,及时的打印输出。

9.上面没提到Excel事件,Excel对象模型。下文也没有面向对象的内容,全是基础语法的罗列。

二、常用数据类型

1

Integer

整数

2

Double

小数

3

String

字符串

4

Array

数组

5

Dictionary

字典

6

Boolean

布尔

7

Date

日期

8

Object

对象


VBA很直接的把Object当成一种类型,其中的Dictionary就属于Object。

三、运算符

1.算数运算符

+

-

*

/

%

^

2.比较运算符

=

等于

<> 

不等于

大于

小于

>=

大于等于

<=

小于等于

3.逻辑运算符

And

Or

Not

Xnot

或非

4.连接运算符

+

连接

&

连接

四、控制流

If……elseif……else分支

Switch分支

For循环

For each循环

While……Wend循环

Do While循环

………………

五、常用内置函数

1.特殊类

1

InputBox

输入框

2

MsgBox

消息框

3

Rnd

随机数

4

Timer

计时器

5

RGB

RGB取色

2.数组

1

Lbound,Ubound

下限,上限

3.字符串

1

Len

返回长度

2

Join,Split

拼接和分割

3

Left,Right,Mid

取子串

4

InStr,InStrRev

找子串位置

5

Trim,LTrim,RTrim

去空格

6

Format

格式化

7

Asc,Chr

ASC转换

8

LCase,UCase

大小写转换

4.数字

1

IsNumeric

类型确认

2

Round,Fix

四舍五入

5.时间与日期

1

Date,Time,Now

获取系统时间

2

DateAdd,DateDiff

日期加减

3

DatePart,Month,Day,Hour

时间归段

VBA-TRANSFORM 语句中的语法错误

【中文标题】VBA-TRANSFORM 语句中的语法错误【英文标题】:VBA- Syntax error in TRANSFORM statement 【发布时间】:2016-12-20 11:56:48 【问题描述】:

我在 VBA 中有一个错误,此查询作为交叉表正常运行,但是当我尝试切换 VBA 时,在 TRANSFORM 语句中抛出一个语法错误有人可以帮助我吗?谢谢。

     "TRANSFORM Str(Count([Prijava].[id]))AS O, Str(Count([Prijava].[datumSmrti])) AS U" & _
     "SELECT MKB10.id, IIf([pol].[id]=1,'M','Ž') AS pol, MKB10.NazivLatinski" & _
     "FROM Pol INNER JOIN ((Opstina INNER JOIN Pacijent ON Opstina.id = Pacijent.opstinaID) INNER JOIN (MKB10 INNER JOIN Prijava ON MKB10.id = Prijava.mkb10ID) ON Pacijent.id = Prijava.pacijentID) ON Pol.id = Pacijent.polID" & _
     "GROUP BY MKB10.id, IIf([pol].[id]=1,'M','Ž'), MKB10.NazivLatinski" & _
     "ORDER BY MKB10.id" & _
     "PIVOT starosnoDoba2([starost]) In ('<1','1','2','3','4','5','6','7-9','10-14','15-19','20-29','30-39','40-49','50-59','60-69','70>')"

【问题讨论】:

【参考方案1】:
 "TRANSFORM Str(Count([Prijava].[id]))AS O, Str(Count([Prijava].[datumSmrti])) AS U " & _
     "SELECT MKB10.id, IIf([pol].[id]=1,'M','Ž') AS pol, MKB10.NazivLatinski " & _
     "FROM Pol INNER JOIN ((Opstina INNER JOIN Pacijent ON Opstina.id = Pacijent.opstinaID) INNER JOIN (MKB10 INNER JOIN Prijava ON MKB10.id = Prijava.mkb10ID) ON Pacijent.id = Prijava.pacijentID) ON Pol.id = Pacijent.polID " & _
     "GROUP BY MKB10.id, IIf([pol].[id]=1,'M','Ž'), MKB10.NazivLatinski " & _
     "ORDER BY MKB10.id " & _
     "PIVOT starosnoDoba2([starost]) In ('<1','1','2','3','4','5','6','7-9','10-14','15-19','20-29','30-39','40-49','50-59','60-69','70>') "

连接字符串时需要空格,否则您的文本会一起运行...您正在阅读 "TRANSFORM..... AS USELECT..."

【讨论】:

【参考方案2】:

我发现答案很愚蠢,一切都很好,当然它可以工作,但有一些事情需要纠正,逗号应该站在 & "" "" & 之后,因为它出现在一个字符串之后继续& _ 在此之前应该像 pollID 一样站立空间“ 所以,看起来像这样`

"TRANSFORM Str(Count([Prijava].[id]))&"" ""& Str(Count([Prijava].[datumSmrti])) " & _
"SELECT MKB10.id &"" ""& IIf([pol].[id]=1,'M','Ž') &"" ""& MKB10.NazivLatinski " & _
"FROM Pol INNER JOIN ((Opstina INNER JOIN Pacijent ON Opstina.id = Pacijent.opstinaID) INNER JOIN (MKB10 INNER JOIN Prijava ON MKB10.id = Prijava.mkb10ID) ON Pacijent.id = Prijava.pacijentID) ON Pol.id = Pacijent.polID " & _
"GROUP BY MKB10.id, IIf([pol].[id]=1,'M','Ž'), MKB10.NazivLatinski " & _
"ORDER BY MKB10.id " & _
"PIVOT starosnoDoba2([starost]) In ('<1','1','2','3','4','5','6','7-9','10-14','15-19','20-29','30-39','40-49','50-59','60-69','70>') "

【讨论】:

以上是关于VBA语法总结的主要内容,如果未能解决你的问题,请参考以下文章

VBA学习笔记之End属性&查找最后的单元格方法总结

Access VBA中的DCount

java有没有类似vba语法的包操作excel

VBA-TRANSFORM 语句中的语法错误

vba 将控制称为变量语法

VBA 的 SQL 语法