一、前言

在最近的工作中,有幸了解到VBA相关的知识,它主要是被应用于我们平时所使用的word和Excel中,主要用VBA代码来进行数据处理,在办公领域使用的比较广泛。通过一段时间的学习,总结了一些自己的理解和所学,在此于大家进行分享。

Visual Basic for Applications(VBA)是Visual Basic的一种宏语言,是微软开发出来在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。主要能用来扩展Windows的应用程序功能,特别是Microsoft Office软件。也可说是一种应用程式视觉化的Basic 脚本。该语言于1993年由微软公司开发的的应用程序共享一种通用的自动化语言——–Visual Basic For Application(VBA),实际上VBA是寄生于VB应用程序的版本。微软在1994年发行的Excel5.0版本中,即具备了VBA的宏功能。

二、编程规则

  • 1.EXCEl的数据类型:日期值、数值、文本、逻辑值、错误值
  • 2.VBA的数据类型:布尔型、整数型、小数型、字符串型、日期型、对象型,变体型、用户自定义类型(其中对象型需要多多了解),可以了解VBA为弱类型语言
  • 3.声明变量:Dim 变量名 As 数据类型,可以定义不同的作用域(Public、Private、Static),Option Explicit加上这段代码可以强制声明所有变量
  • 4.给数据类型的变量赋值:[Let] 变量名 = 要存的数据 (中括号的关键值可以省略)
  • 5.给对象类型的变量赋值:set 变量名 = 要存储的对象名称
  • 6.可同时生成多个变量
  • 7.声明常变量
  • 8.声明数组:Dim 数组名 (a to b) As 数据类型,可以声明多维多维数组
  • 9.可使用变量类型声明符定义变量类型:Dim Str As String 相当于 Dim Str$
  • 10.声明变量时不指定变量类型那么这个变量就是变体形

那么接下来我们就来看一看一些基础的VBA代码:

Sub 测试()Dim arr() As VariantDim brr() As VariantDim i As IntegerDim Length As IntegerDim Longth As IntegerWorksheets("利润表").SelectLength = Range("A1").End(xlDown).RowFor i = 1 To Length Step 1Range("D" & i) = Cells(i+1,"E") + Cells(i+1,"F")NextWorksheets("合计表").SelectLongth = Range("C2").End(xlDown).RowFor i = 1 To Longth Step 1Range("E" & i) = Cells(i,"C") - Cells(i,"D")NextEnd Sub

VBA中使用Dim来定义变量,一般原型为 Dim 变量 As 数据类型,比如:

Dim arr() As Variant
Dim length As Integer

通过Dim来定义两个变量,定义一个数组的变量和一个定义长度的变量。它们的数据类型分别为Variant和Integer.

各数据类型所能表示的最大长度:

类型名称            类型                             长度

比特                    Byte                           0到255

Integer                       -32768 ---- 32767

Long                          -2147483648----2147483647

单精度浮点型    single                         1.401298*10^-45----3.402823*10^38

双精度浮点型    Double                       4.94065645841247*10^-324------1.7969313486232*10^308

日期型                Date                           100年1月1日 ------9999年12月31日

字符串型            不定长                         0---20亿

定长                            1到65400

变体型                Variant                        保存任意值

访问某个表格中的单元格,一般的访问路径为:Excel程序--->工作簿---->工作表---->单元格:

三、运算符

1.算术操作符

+ : 两个操作数相加

- : 两个操作数相减

* : 两个操作数相乘

/ : 两个操作数相除

% : 模运算符,整数除法后的余数

^ : 指数运算符

2.比较运算符

= : 检查两个操作数的值是否相等。如果是,那么条件是真。

<> : 检查两个操作数的值是否不相等。如果值不相等,则条件为真。

> : 检查左操作数的值是否大于右操作数的值。如果是,那么条件是真。

< : 检查左操作数的值是否小于右操作数的值。如果是,那么条件是真。

>= : 检查左操作数的值是否大于或等于右操作数的值。 如果是,那么条件是真。

<= : 检查左操作数的值是否小于或等于右操作数的值。如果是,那么条件是真。

3.逻辑运算符

AND : 两个条件都为真,则表达式为真。

OR : 如果两个条件中的任何一个为真,则条件为真。

NOT : 用于反转其操作数的逻辑状态。 如果条件成立,那么逻辑非运算符结果是条件不成立。

XOR : 如果表达式中只有一个表达式的值为True,则结果为True。

4.连接操作符

& : 连接两个值

1 & 2 = 12

"1" & "2" = 12

+ : 将两个值添加为变量,其值是数字

1 + 2 = 3

"1" + "2" = 12

四、基础代码认识

1.VBA对单元格的操作1.获取单元格的值Sub alert()'A1 = Sheets(1).[a1]    '获取第一个工作表(表名为工作表1)中A1的值赋值给X'A1 = Sheets("工作表1").[a1]'A1 = Sheets(1).Cells(1, 1)'A1 = Sheets("工作表1").Cells(1, 1)A1Range("A1").Value    '获取当前工作表A1的值MsgBox (A1)   '弹出对话框End Sub1.单元格赋值Sub setVal()Range("A1").Value = 100   '点击VBAProject窗口的'运行子过程'End Sub2.设置单元格的填充色Sub setColor()Range("B3").Interior.ColorIndex = 3   '值有1-56,代表56种颜色End Sub3.单元格的复制、粘贴Sub cut()Range("B3").copy Range("C3")   '将B3的值,复制到C3单元格End Sub4.单元格的剪切Sub cut()Range("A1").cut Range("B3")  '将A1的值,剪切到B3单元格End Sub2.条件判断结构if then 语句Sub if_test()B3 = Range("B3").ValueIf B3 > 10 ThenMsgBox ("大于10")    '弹出字符串时,必须为双引号ElseIf B3 < 10 ThenMsgBox ("小于10")ElseMsgBox ("aaaa")End IfMsgBox (B3)End Sub
3.选择判断结构Select Case 语句Sub select_test()B3 = Range("B3").ValueSelect Case B3Case 1 To 10msg = "1到10之间"Case 11 To 20msg = "11到20之间"Case 21, 22msg = "21,22的值"Case Elsemsg = "其他的值"End SelectMsgBox (msg)End Sub
4.循环结构for next 语句Sub for_test()For i = 1 To 10 Step 1If i > 5 Then    Exit For    '跳出for循环End IfRange("D" & i).Value = i    '循环赋值给D1-D10Next iEnd Subfor each 语句:用于为数组或集合中的每个元素Sub for_ecah_test()fruits = Array("苹果", "香蕉", "雪梨")For Each Item In fruitsMsgBox (Item)NextEnd Subdo  while  loop Sub do_while_loop_test()Do While i < 5    '在循环开始时,判断条件是否符合If i > 3 ThenMsgBox ("跳出循环")Exit DoEnd Ifi = i + 1MsgBox ("The value of i is : " & i)LoopEnd SubSub do_while_loop_test()Do If i > 3 ThenMsgBox ("跳出循环")Exit DoEnd Ifi = i + 1MsgBox ("The value of i is : " & i)Loop While i < 5    '在循环结束时,判断条件是否符合End Sub

认识VBA------------------VBA基础相关推荐

  1. 动态数组怎么定义_Excel VBA 数组基础知识,初学者不可不学的关键知识

    今天和大家要说的是VBA数组的基本知识点,等你学到后面就会知道,数组和字典搭配起来真的是事半功倍的啦!所以学习好数组的基本知识点也是必不可少的,基础知识有了,才能有后面的应用. 数组的基本概念 数组其 ...

  2. VBA每日一练(4),补充VBA的基础语句知识,基本控制结构,I/O基础

    一 编程的基础知识 1.1 编程基础知识 程序的构成 程序的构成(表面):很多语句 程序的构成(本质):数据,代码 程序的构成(过程构成)---I/O:输入 input,数据处理,输出  output ...

  3. EXCEL的VBA编程基础1

    声明:本文原创,禁止转载:所有代码都通过测试 像任何一门语言一样,先来段最简单的代码 cells(a,b) 表示第a行,第b列的单元格内容,a,b是整数,b可以为字节串,如"a", ...

  4. [VBA]VBA调用Python

    import xlwings as xwdef DailyAward():# 配置表读打开app = xw.App(visible=False, add_book=False)app.display_ ...

  5. keil debug如何在watch直接修改变量值_零基础学VBA:什么是VBA?如何编写和运行VBA代码?...

    HI,大家好,我是星光,今天咱们来继续学习VBA.在上一章咱们讲了为什么要学习VBA~VBA还值不值得学~学了还有没有用~零基础学VBA编程01:VBA还能不能学?学了还有没有用? 这一章咱们再来简单 ...

  6. Access基础教程--第八章 使用VBA编程

    本章内容 ◆ VBA编程基础 ◆ 创建和设计VBA程序 ◆VBA程序调试与运行 一.VBA编程基础知识 在执行简单的操作时,宏可以完成,如窗体的打开与关闭.工具栏的显示和隐藏等.对于稍复杂一些的任务, ...

  7. VBA基础概念和宏的录制

    @示例文件 以下图为例,准备3份不同的Excel文件,分别命名为"2016 Revenues","2015 Revenues"和"2014 Reven ...

  8. CorelDRAW插件-GMS插件开发-VBA基础语法-变量、运算符、函数-CDR插件(三)

    文章目录 1.变量 1.1.命名要求 1.2.作用域 1.3.变量赋值 1.4.数组 2.运算符 2.1.算术操作符 2.2.比较运算符 2.3.逻辑运算符 2.4.连接操作符 3.函数 3.1.无参 ...

  9. vba 窗体单选框怎么传回sub_VBA之EXCEL应用

    一直以来,总想写一部面对EXCEL的专门VBA教程,今终得如愿.想我初学VBA时,也是从EXCEL入手,不知深浅,也很难窥探到VBA的全貌,花费了大量的时间,走了很多弯路,却难得其所,关键就是没有好的 ...

  10. vba怎么安装_VBA还要学吗?怎么入门Excel VBA?

    教程领到手,学习不用愁!领 ↑↑↑ 快捷高效入门:看知识兔视频课程,跟着知识兔老师操作,听知识兔老师讲解,边看边实练,初学者不要自己瞎琢磨瞎折腾,很容易走弯路.学以致用,光看不练都是假把式.学完知识兔 ...

最新文章

  1. short 类型的大小为( )个字节。_2008-2012,张一鸣在豆瓣书影音为字节跳动埋下的5个彩蛋...
  2. RNN-循环神经网络-02Tensorflow中的实现
  3. OpenGL之深入解析纹理的渲染使用
  4. 【Hadoop学起来】分布式Hadoop的搭建(Ubuntu 17.04)
  5. [蓝桥杯][2019年第十届真题]等差数列
  6. 我真out了,高端人士都这样玩儿?
  7. 关于并发数与在线数的概念
  8. c语言实验报告4结构体,c语言实验报告结构体.doc
  9. python3-关于GitHub的最基本操作
  10. HP笔记本装XP,‘基本系统设备’驱动的安装
  11. Elastic Searchable snapshot功能初探 三 (frozen tier)
  12. Python免费发短信
  13. SendMessage函数完全使用手册 (解读WM_)
  14. Android 天气APP(一)开发准备
  15. vlookup使用步骤_vlookup函数怎么使用_vlookup函数的使用方法及实例 - 系统家园
  16. 第十一届蓝桥杯省赛完整解析(Java 大学B组)
  17. skylake服务器CPU型号芯片,Skylake与Kaby Lake顶级处理器到底有多大差别?Intel i7-7700K评测...
  18. 【Linux】Linux的共享内存
  19. 360无线wifi路由器连接到服务器,360PI无线路由器怎么联接无线+有线?
  20. 启明星辰2018年营收达25亿元 同比增长10.58%

热门文章

  1. 港口水域电子海图数据快速检索算法及应用
  2. Web基础配置篇(四): Mysql的配置及使用
  3. 移动计算的未来:是什么在推动变革? | 幂集创新
  4. 华硕主板怎么刷bios
  5. 计算机软件性能测试的过程,软件性能测试过程研究与应用
  6. html wap加载优化,移动版Wap网页针对百度进行SEO优化的一些要点总结
  7. 如何将php改成mp4,如何将swf转换成mp4
  8. “去面试,你敢不填登记表吗?”“不敢”
  9. 光影精灵安装ubuntu20.04安装显卡驱动外界显示屏
  10. 2017大学网考计算机b,(热)2017年4月网考 大学英语b网考 电大英语网考 计算机应用.doc...