学习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#开发BIMFACE系列13 服务端API之获取转换状态
系列目录 [已更新最新开发文章,点击查看详细] 在<C#开发BIMFACE系列12 服务端API之文件转换>中详细介绍了7种文件转换的方法.发起源文件/模型转换后,转换过程可能成功 ...
- springboot事务中的一些坑
springboot开启声明式事务方式 在Application启动类中加入注解@EnableTransactionManagement(mode = AdviceMode.PROXY) 在需要加入事 ...
- ST算法 Sliding Window algorithm template
ST算法(Sliding Window):A easy way to slove the substring problems algorithm template to slove substrin ...
- HDU 5973 Aninteresting game 威佐夫博奕(Wythoff Game)
HDU 5973:http://acm.hdu.edu.cn/showproblem.php?pid=5975 题意: 有两堆石子,每次可以从一堆石子中取任意个,或者从两堆石子中取相同个数的石子.两个 ...
- 2019杭电多校 hdu6662 Acesrc and Travel (树形dp
http://acm.hdu.edu.cn/showproblem.php?pid=6662 题意:有两个人在树上博弈,每个点节点有两个分数a[i]和b[i],先手先选择一个点,后手在先手选的点的相邻 ...
- codeforces Round #389(Div.2)C Santa Claus and Robot(思维题)
题目链接:http://codeforces.com/contest/752/problem/C 题意:给出一系列机器人的行动方向(机器人会走任意一条最短路径),问最少标记几个点能让机器人按这个 路径 ...
- MySql连接笔记
一.内连接查询 inner join 关键字:inner join on 语句:select * from a_table a inner join b_table b on a.a_id = ...
- Container容器crontab错误问题
问题描述 容器中的cron定时计划任务不执行 问题分析 排查一:检查Container容器是否安装cron # rpm -qa | grep cron # ls /etc/init.d/ 若没有安装, ...
- [币严区块链]数字货币交易所之瑞波(XRP)钱包对接
对接Ripple(XRP),不需要本地部署钱包,直接访问Ripple API,本文包括访问Ripple API及如何免费获取测试的XRP. 对接流程 安装Ripple API Ripple API 接 ...
- 玩转 SpringBoot 2 快速整合 | FreeMarker篇
FreeMarker 介绍 Apache FreeMarker™是一个模板引擎:一个Java库,用于根据模板和更改数据生成文本输出(HTML网页,电子邮件,配置文件,源代码等).模板是用FreeMar ...