学习VBA
学习VBA
VBA 就是 (Visual basic for Application) 用的比较多的是在Excel中处理数据,可以方便快捷地使用编程方式来对数据进行操作。
VBA 数据类型
Integer
Public Sub fun()
Dim num As Integer, total As Integer ' 九九乘法表
For i = 1 To 9
For j = 1 To i
Debug.Print i & " * " & j & " = " & (i * j)
Next j
Next i
End Sub
Boolean
Dim isExists As Boolean
isExists = False
isExists = True
Single
Single主要是表示小数,而Integer这个表示整数,Double比Single表示更长,在一些高级语言中,Single也是表示float类型。但是在VBA中没有float类型。
Dim agePrecent As Single
agePrecent = 12.6
Double
Dim agePrecent As Double
agePrecent = 12.6
String
String也是一个基本类型
Dim userName As String
userName = "Xiao ming"
If userName <> empty or userName <> "" Then
'TODO
ElseIf userName <> "Xiao ming" Then
'TODO
Else
MsgBox "你是" & userName
End If
我们可以发现,基本类型都是用 变量名 = 值;但是如果是对象,我们就需要用到 Set关键字。Set 变量名 = 值。我们在连接字符串或者说是字符串拼接的时候,我们用 & 进行拼接。
Object
对象类型,对象类型的赋值,需要使用set进行。
Dim dic As Object
Set dic = CreateObject("scripting.dictionary") '创建一个字典
dic.Exists(key) ' 键是否存在
dic.Item(key) '通过键读取某个值
dic.Keys() '获取所有的键
dic.Items() '获取所有的值
dic.Add key,value ' 添加键值
在Office中我们使用开发工具进行编码,添加模块的时候,有一个模块和类模块的区分。所谓模块,我们可以认为是一个公共接口,只要里面定义的方法是Public的,那么其他任何地方都可以调用。如果我们定义的是类模块,那么他就应该具有类的特性,需要创建实例才能用。
Array
VBA中没有一个类型来定义数组,但是数组使用也是比较广泛。值得注意的是,和其他编程语言不一样,在VBA中数组起始的索引号是从1开始的。
Dim arr (1 To 10) As Integer ' 一维数组
Dim index As Integer
For index = 1 to 10
arr(index) = index
Next index
Dim arr(1 To 2, 1 To 5) As String ' 定义二维数组
' 定义一个函数,返回类型为数字类型,统计数组长度。
Public Function Len(ByVal arr) As Integer
Len = UBound(arr) - LBound(arr) + 1
End Function
Variant
可变类型,所谓可变类型,就是我们可以定义其为任意类型,类似JavaScript中的Var
函数
无返回类型的函数
我们在定义无返回类型的函数的时候,通常用Sub关键字,但是我们可以用使用Function这个关键字的。Function是用于有返回类型的函数中。函数的定义:访问级别 函数类别 函数名([params] parameters)
Public Sub Test1()
Debug.Print "Test"
End Sub
'上面的函数也可以修改为
Public Function Test1()
Debug.Print "Test"
End Function
Private Sub Cal(num As Integer, num2 As Integer)
Debug.Print (num * num2)
End Sub
' 调用方法
Call Cal(12, 13)
' 或者
Cal 12, 13
' 调用无参的函数就不能省略Call关键字
Call Test1()
有返回类型的函数
定义有返回值的函数,我们必须使用Function关键字,我们将结果赋值给函数名,如果是返回的对象,不要忘记使用Set关键字。
Public Function Add(a1 As Integer, a2 As Integer) As Integer
Add = (a1 + a2)
End Function
' 创建一个字典
Public Function CreateDic() As Object
Set CreateDic = CreateObject("scripting.dictionary")
End Function
' 调用
Dim resVal As Integer
resVal = Add 13,13
Debug.Print resVal
Dim dic As Object
Set dic = CreateDic()
学习VBA的更多相关文章
- Excel学习——VBA学习(一)
(一)什么是VBA?什么是宏? VBA (Visual Basic For Application)是一种编程语言,是建立在Office中的一种应用程序开发工具.可以利用VBA有效地扩展Excel的功 ...
- VBA学习思路
打算花两三天学习VBA的基础,学习资料为<别怕,VBA其实很简单>,为了快速学习,先了解大致框架,后续再深入学习各种属性.方法和技巧. 1.VBA编程环境基本操作,手工操作,熟悉即可 2. ...
- VBA学习之关于数据透视表的应用
工作中很多地方需要同时处理多个数据表,而且用数据透视表进行排版,排序,计算字段,一个一个的做非常累,这里给出批量处理的方法. 学习VBA之前最好懂一点点VB的基础知识,因为里面的很多语法问题都是由VB ...
- VBA 开发学习--基础语法
MsgBox "开始学习VBA" '提示框 Dim str As String '声明str变量是string类型 Let str = "一起来看流星雨" '给 ...
- VBA学习笔记
这是一个学习VBA编程的学习笔记. 一. 介绍 二. 使用手册 2.1. 如何在Excel2010中开始使用VBA? 2.2. 如何使用VBA编辑器进行编程? 三. 语法说明 3.1 数据类型 3.2 ...
- VBA 格式化字符串 - Format大全
VBA 格式化字符串 VBA 的 Format 函数与工作表函数 TEXT 用法基本相同,但功能更加强大,许多格式只能用于VBA 的 Format 函数,而不能用于工作表函数 TEXT ,以下是本人归 ...
- 来吧!带你玩转 Excel VBA
来吧!带你玩转 Excel VBA 从错失良机到艰辛的DOS征程,从坎坷购机自学路到转机起程,从爱好到事业,他从一个完全不懂电脑的人到VBA高级应用者,一切全是自学…… 我是罗刚君,来自四川的一个小县 ...
- 浅谈VBA
VBA,全称Visual Basic for Applications,其中的一些专业性的解释可以自行搜索,这里就不一一介绍.半年以前,我是不知道VBA的,当我听到VBA的时候,我却迷糊了.VBA是什 ...
- vba编程基础2
安装office2010的时候, 最好是 完全安装/完整安装 , 这样可以查阅 excel的 "帮助文档" 帮助文档中包含了更多的/更详细的 参考信息. 普通模块无事件, 只有 子 ...
随机推荐
- c++学习笔记_4
前言:本笔记所对应的课程为中国大学mooc中北京大学的程序设计与算法(三)C++面向对象程序设计,主要供自己复习使用,且本笔记建立在会使用c和java的基础上,只针对与c和java的不同来写 运算符重 ...
- Badboy - 导出脚本,用于JMeter性能测试
参考: http://leafwf.blog.51cto.com/872759/1131119 http://www.51testing.com/html/00/130600-1367743.html ...
- AOJ-2249-Road Construction-dijkstra-最小花费
Road Construction 题意:在一个无向图中,每条边上有建设的花费和路径的长度,要求求得,在保持每个点到1号点最小距离不变的情况下,求最小的总花费: 思路:用dijkstra 找出每个点的 ...
- CodeForces 1082 G Petya and Graph 最大权闭合子图。
题目传送门 题意:现在有一个图,选择一条边,会把边的2个顶点也选起来,最后会的到一个边的集合 和一个点的集合 , 求边的集合 - 点的集合最大是多少. 题解:裸的最大权闭合子图. 代码: #inclu ...
- HDU 1087 Super Jumping! Jumping! Jumping! 最长递增子序列(求可能的递增序列的和的最大值) *
Super Jumping! Jumping! Jumping! Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64 ...
- ZOJ 3872 Beauty of Array 连续子序列求和
Edward has an array A with N integers. He defines the beauty of an array as the summation of all dis ...
- 给 Flutter 界面切换来点特效
本文微信公众号「AndroidTraveler」首发. 背景 我们知道页面之间如果直接切换,会比较生硬,还会让用户觉得很突兀,用户体验不是很好. 因此一般情况下,页面之间的切换为了达到平滑过渡,都会添 ...
- MySql创建索引、删除索引、新增字段、删除字段、修改字段语句
--------------------------------------------------------- -- ALTER TABLE 创建索引 ---------------------- ...
- MySQL基础/数据库和表的设计
MySQL基础 一:安装MySQL(按步骤操作,如果下载后使用不了,试着用360安全卫士卸载MySQL,清除残留的,方便在下载造成不必要的麻烦:如果这样也不行,那就需要重做系统在进行下载) 二:创建数 ...
- Android四大组件初识之Service
Service作为Android四大组件之一,可以与Activity建立双向连接(绑定模式),提供数据和功能.也能够接收Intent单方面请求(调用模式),进行数据处理和调度功能. Service与A ...