0%

VBA基础篇

  • 学习笔记

不同类型的代码需要写在不同的地方

image-20241003185604639

什么是宏:

宏是一种功能非常强大的文本展开工具;

在excel中的宏没有那么复杂,它就是一段用VBA编写的小程序

image-20241009103942703

image-20241009104249843

image-20241009104651695

image-20241009104718397

image-20241009114346145

image-20241009115045888

image-20241009115149788

image-20241009115315717

image-20241009115408996

image-20241009115500982

image-20241009115904043

image-20241009174322027

image-20241009174348070

强制声明机制image-20241009174950601

image-20241009175043480

image-20241009175056657

image-20241009175346723

image-20241009175359690

image-20241009175433926

for循环

image-20241009185034778

逆序的循环:step=-1

image-20241009185303034

image-20241009185422952

if语句

image-20241009192627168

image-20241009192751056

尽量还是写在不同行,使结构更清晰

image-20241009192913965

嵌套的if语句:

image-20241009193124343

多个分支结构:

image-20241009193408400

image-20241009193718070

image-20241009193732354

如何debug:

设置断点:鼠标点击这行代码的左侧,然后这行代码的左侧会出现小圆点,此时点运行程序后,程序运行完这行代码后会停止。
单步执行:键盘上的F8键

添加监视:依次点击:调试->添加监视->表达式,然后输入想要监视的变量

image-20250530160124376

关于字符串:

1.用双引号括起来(没有双引号会被认为是变量名)

2.字符串中可以包括各种特殊字符(如空格)

3.字符串中可以包含多个字符、1个字符、甚至0个字符

4.大写字母和小写字母是不一样的字符

5.由数字字符构成的字符串并不是数字

image-20250530163051819

​ 因为在VBA中,变量名加&有特殊含义

录制宏

当我们想用vba代码自动的操作excel中的某种元素时,比如插入一个饼图,那么我们只需要知道饼图在VBA中是用哪一种变量名代表的,它有哪些属性和方法,然后去调用它就行。

image-20250602121408278

当我们希望用VBA代码自动执行一段操作的时候,我们可以先自己手工地执行一遍操作,这时让excel把我们手工的操作记录下来,然后它会把这些动作翻译成VBA代码写在VBE编辑器中

while语句

image-20250602160837158

image-20250602161245464

image-20250602161302039

多重嵌套循环:

image-20250602161916701

如何注释:rem加上空格再加注释语句

image-20250602162145531

为了方便,rem可以用单引号代替

image-20250602162301513

类与对象

对象:系统中每一个具体的事物
类:对象的分类,同类对象特征相同
属性:是什么样子?
方法:能做什么?

微软已经替我们写好了类、属性、方法,excel中的类很多,记住其中几个主要的类就好了

image-20250602164130279

image-20250602164702054

如何自动添加新的工作表:
worksheets的Add方法:在所属工作簿中新建一张工作表

image-20250602165343123

用多重循环解决多表汇总问题:

image-20250602170126418

用worksheets引用工作表的两种形式:

  1. 根据工作表的显示位置:WorkSheets(5)

  2. 根据工作表的名称:WorkSheets(“赵六”)

    Sub allScore()
    Dim i,k
    Dim wPerson, wAll As Worksheet

    Set wAll = Worksheets(“总分榜”)
    k=2

    For i = 1 To Worksheets.Count
    Set wPerson = Worksheets(i)
    if wPerson.names <> “总分榜” Then
    wAll.Cells(i, 1) = wPerson.Cells(1, 2)  
    wAll.Cells(i, 2) = wPerson.Cells(2, 3)    

    k=k+1
    End If

    Next i
    End Sub

这节课讲的将工作表分别汇总,再登记到一张新的工作表里的操作在日常生活中非常常见,因此需要多熟悉,记牢,做到自己能够编写程序。

模块化程序涉及(使用过程)

使用过程的优点:

  1. 代码清晰,易于维护
  2. 灵活拓展,轻松修改
  3. 代码重复使用,提高效率

image-20250602171236953

调用过程时,可以省略关键字Call,直接写过程名.