办公问答网

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 63|回复: 1

Excel 宏与VBA W

[复制链接]

3

主题

7

帖子

13

积分

新手上路

Rank: 1

积分
13
发表于 2022-12-5 10:06:36 | 显示全部楼层 |阅读模式
1.宏与VBA简介



2.录制宏

文件-选项-自定义功能区-√开发工具
开发工具-录制宏
3.查看宏背后的VBA代码

按钮Visual Basic
快捷键Alt+F11查看宏的代码
Ctrl+R 工程资源管理器(试图选项卡中)
工程-VBAProject-模块(双击查看代码,工作簿中有宏才有模块按钮)
4. 保存含有宏程序的文件

用后缀名为.xlsm保存宏excel文件,别用其他格式。
5. 宏文件安全设置

文件-选项-信任中心-信任中心设置-宏设置
6. 使用相对引用录制宏



7. 通过表单控件运行宏

开发工具-插入-表单控件-制定宏
️控件关联宏工具,点击后运行,使用宏操作步骤不能通过Ctrl+Z撤销。
8. 快速访问工具栏运行宏

文件-选项-快速访问栏- ️点击常用命令-选择宏-修改(更改宏显示图标)
9. 保存宏到个人宏工作簿

宏保存到当前工作簿(只有打开此工作簿,才能对其他工作簿使用此宏。)
保存在所有工作簿(宏将存储在excel自动创建工作簿,可隐藏)
10. 熟悉VBE开发环境

一个工作簿对应一个VBA project
一个模块对应一个宏
双击 VBA project下内容显示对应编辑操作框
窗口(对现有打开窗口位置进行排放)
11. 编写第一个VBA代码



12. 编写运行VBA代码补充知识



一个模块编辑多个代码,多个模块编辑一个代码。
Call 运行代码


13. 理解变量的含义

变量:内存区域的一块空间。需要指定内存空间中存储什么类型的数据,以下标红为常用数据类型


整数 Integer Long
小数,负数 Double
日期 Date
文本 String
逻辑数据 Boolean


14. 不同数据类型的变量

选项卡最左方,右键,编辑,注释文本内容(步骤程序意思)。


针对不同类型变量的处理。
15. 多变量声明

视图-属性窗口-修改模块名称


逗号分隔不同类型。
16. Variant可变数据类型

未定义数据类型,vba就会默认为是Variant可变数据类型。
存储少的数据类型,vba采用大的范围,浪费内存。


17. 强制变量声明

第一行加上option explicit,代码出错运用就会提示是何种变量错误。


工具-选项-编辑器-要求变量声明(选定后模块后所有代码都有变量声明。)
18. 变量的生命周期

变量占据内存空间


已经定义变量,以end sub未界。在一个子程序内可以运行,在下一个子程序中无法运行。


Dim Price As Double在Sub之前整个模块都可以使用。
Public Price As Double在Sub之前整个工作簿都可以使用。
19. Static修饰符



未用count定义,运行子程序以后migbox只显示运行1次,count默认赋值为0,count=0+1=1。


Static定义count以后,在sub子程序运行完毕后,count变量所占据的内存空间不会消失。
释放内存空间方法,运行-重新设置。重新设置以后有static定义也会释放内存空间,再次运行变成1,不计算之前的运行次数。
编写的代码依附于当前编辑的工作簿,工作簿关闭以后,count会释放内存空间,再次运行变成1,不计算之前的运行次数。
20. 常量的使用



常量只允许最开始赋值,不能修改数值。


vbred内置常量。
21. 数学运算符



Mod取余运算符
22. 比较运算符



比较运算符用于分支判断。
23. 逻辑运算符



Or,and,取反运算符。


表达式:常量、变量、运算符组合。
24. VBA命名规范



空格是特殊的符号,vba中标蓝的单词有特定的含义,不能运用特殊的单词命名。
首字母大写,单词下划线分隔命名。
25. If选择结构



不同条件的判断,Then,Elseif,else。
多个条件判断,注意编写时不同分支的判断顺序。
26. Select选择结构

select case表示基于某个变量的不同情况进行不同的处理措施。


select case只能基于某一个变量来进行不同的处理措施,应用面比较窄,一般都用if。
27. ForNext选择结构

ForNext实现循环结构
For Num变量初始化进行赋值


第一次运行才赋值,后续为判断是否循环到编写的次数。


For循环,出现溢出先查看定义的变量。
28. Step的应用场景



step控制每次循环的时候加多大的数字。
29. 如何中断For循环



中途打断退出for循环。
30. 嵌套For循环



嵌套for循环一般2次就ok。
31. DoWhile循环结构



DoWhile实现循环结构。
32. DoUntil循环结构



DoUntil实现循环结构。
33. 编写无参数子过程

子过程,子程序,子函数包裹了一些指定代码。


SubTest()无参数的子过程。
34. 编写有参数子过程

调用有参数的子过程


100,2 调用1-100
35. 编写自定义函数



As double标明数值返回类型,Function自定义编写函数。
36. 一维数组



一维数组对整个数组进行统一的管理。


使用Lbound Ubound后,能指定最小的角标和最大的角标。数组赋值有4组数据,可以不更改Dim Myarray(1 To 3)为Dim Myarray(1 To 4)。
37. Option Base的作用


没有指定最小的角标,默认值为0.


整个子程序首行编写option base 1,就相当于最小的角标就为1。单独使用Dim Myarray(3)As Integer运行时会显示下标(最小角标)越界。
38. 二维数组

通过角标访问对应区域数据。


与一维数组相比,有行和列,
39. 动态数组



Redim调整动态数组的时候,之前的赋值都会自动抹除。
40. 理解面向对象



️对象:有属性也有方法。万物皆对象~


value是归属于range的变量。输入value后左侧的小图标表示为属性(可以理解为就是一个变量,但是实际上更复杂一些,对象中可以包含对象)。
输入select选择后左侧的小图标表示方法。
41. 对象层级框架



对象层次访问


可省略写的部分默认为活动单元格,当前工作簿。
42. 单元格引用



单元格的引用,行和列的引用。
43. Cells和Offset属性



通过cells属性引用单元格,offset相对某一单元格移位。
44. Select和Activate方法

调试-逐过程Shift+F8(单个执行一个过程,将执行的程序底色为黄色。)


45. Range对象的End属性



End模拟ctrl+方向键的效果
回复

使用道具 举报

1

主题

12

帖子

18

积分

新手上路

Rank: 1

积分
18
发表于 2025-5-18 04:10:55 | 显示全部楼层
我也来顶一下..
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|办公问答网

GMT+8, 2025-7-4 11:02 , Processed in 0.109852 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc. Templated By 【未来科技 www.veikei.com】设计

快速回复 返回顶部 返回列表