Excel——宏教程(精简版)

news2024/11/24 20:20:39

一、宏的简介

1、什么是宏?

Excel宏是一种自动化工具,它允许用户录制一系列操作并将其转换为VBA(Visual Basic for Applications)代码。这样,用户可以在需要时执行这些操作,以自动化Excel任务。

2、宏的优点

我们可以利用宏来进行一些重复性的操作,也能方便我们根据要求去处理表格的数据,提高对表格数据的处理效率。
其具体可以进行的操作有:
1、自动化重复性操作:宏可以自动执行某=某些操作,如打开特定的工作薄、执行特定的计算、格式化数据等。
2、数据处理:宏可以对数据进行处理和分析,如筛选数据、计算、排序、合并、拆分等。
3、自定义功能:宏可以自定义特定的功能和过程,如自动化报告生成、数据导出、输入验证、图表制作等。
4、与其他应用程序交互:宏可以与其他应用程序进行交互,如从Internet上获取数据、发送电子邮件等。

二、使用宏的两种方法:

1、宏录制

如果想要使用宏,首先需要确保“开发工具”选项卡在Excel中可用。可以在“文件”—“选项”—“自定义功能区”中启用它。接下来,可以按照以下步骤录制宏:
1.在“开发工具”选项卡中,单击“宏”按钮,打开“宏”对话框,点击“录制宏"按钮。
2.输入宏的名称和描述,并选择保存的位置(通常是当前工作薄)。
3.开始录制操作,如输入数据、设置格式等。
4.完成操作后,点击“停止录制”按钮,Excel会讲操作转换为VBA代码。

在这里插入图片描述
编写VBA代码
其次还可以通过手动编写VBA代码或结合录制宏和手动编写代码的方式来创建宏。对于每一个录制好的宏,我们可以点击“查看宏”,选择某一个宏,点击“编辑”来查看其生成的VBA代码,也可以改动代码以改变宏的功能。
在这里插入图片描述
运行宏的步骤如下:
打开Excel文件,点击“开发工具”选项卡。
点击“查看宏”按钮,选择需要运行的宏。
点击“运行”按钮,Excel将执行该宏的代码,自动化完成一系列操作。

2、VBA代码

其实在网上能够找到许多已经编辑好的宏的代码,我们也可以有根据的选取一些宏来使用,对我们的表格进行处理,但是这样有两个缺点:

1.可能找不到完全符合我=我们要求的宏。我们对于表格的处理情况是多种多样的,现有的宏可能无法完全适配我们的需求。
2.安全问题:由于宏可以执行任何VBA代码,因此使用网上已有的宏代码存在安全风险。在运行宏之前,还需要确保它来源可靠,并且已适当调整宏安全设置。

因此学会自己编写一些简单的VB代码,或者能够识别一般VBA代码语句的功能、作用,识别宏的安全性还是十分有用的。

三、宏过程定义

宏属于脚本语言,就是不需要编译为exe文件,可以由解释器直接解释运行。

可以通过Sub关键字来定义一个过程
格式为Sub宏名称()

而过程相当于一个函数的概念,一个模块中也可以定义为多个过程,每个过程其实就是一个宏,都可以被单独使用,也可以在过程内通过call 过程名的方式调用另一个过程。
宏名称可以是中文
例如:

Sub 宏示例()
    Cells.Select       '选中单元格
    Range("G22").Activate    '将G22单元格设置为活动单元格
    Selection.Copy      '复制G22其中的内容
    Sheets("Sheet1").Select   '选择sheet1
    Cells.Select     '选择sheet1中的单元格
    Range("F26").Activate   '将sheet1中的F26作为活动单元格
    ActiveSheet.Paste     '将复制的内容粘贴到F26中
End Sub

其中Cells、Sheets、ActiveSheet是VBA的对象。
‘表示注释,其内容不被执行,相当于Python里的#’

同时我们还需要明确一个前提,即一个excel文件内可能保护多个sheet,每一个sheet一系列单元格cell。

1、数据类型

VBA中有多种基本数据类型可选择:

类型名称关键字
整型Integer
单精度Single
双精度Double
字符型String
长整型Long

每个数据类型其实还有简写,不过其简写都是用符号代替,个人决定这样的简写可能会降低代码的可读性。同时VBA还能降低对象类型。

2、变量声明与定义

Public:可定义全局变量
Dim:可定义局部变量

声明变量的语法为:

Dim变量名 As 数据类型
Public变量名 As 数据类型

3、变量定义复制

声明变量后,还需对变量进行赋值,包括基本类型的变量赋值,对象类型的变量赋值

1、给基本类型的变量赋值,直接使用变量名=值的语法即可。
2、给对象类型的变量赋值,需要利用到Set关键字,语法为Set 变量名=值
eg.

Sub example()
	'给基本类型变量赋值
	Dim localNum As Integer
	localNum = 22

	'给对象类型变量赋值
	Dim obj As Range
	Set obj = Range("c1")
End Sub

4、简单逻辑用法

1. 顺序结构

顾名思义就是按照顺序结构执行每一条语句,从上到下,从左到右。

2.选择结构

① If Then 结构
选择结构中,If Then 结构是最基础的一个。它只有条件表达式真时,才执行的代码。

If Then 结构基本语法如下,其中End If是选择结构的结束标志。

If 条件表达式 Then
    '表达式为真时,执行
End If

举个例子:

Sub VBAexample()
	Dim i As Integer '定义i为整型变量
	For i = 2 To 10  'i的值再2——10范围遍历
		If Cells(i,"B").Value >= 100 Then '依次选中B2-B10的单元格,查看其值是否大于100
			Cells(i,"C") = "是"  '大于100则在Ci单元格填入“是”
		End If
	Next i '让i自增
End Sub  '结束

② If Else 结构
相对于if then 多了一个非此即彼的选择。
即If Else结构中,条件表达式在真时,执行Then后的代码;条件表达式为假时,执行 Else后的代码。基本语法如下:

If 条件表达式 Then
    '真时执行的代码
Else
    '假时执行的代码
End If

3. 循环结构

VBA提供了多种循环结构,和C、python的循环结构十分类似,【…】处为执行循环体内代码的条件,它们的差别在于【执行循环体内代码】和【判断是否满足循环条件】的顺序。

循环结构说明
For … Next按指定次数循环执行
For Each逐一遍历数据集合中的每一个元素
Do While … Loop当条件为真时,循环执行
Do … Loop While当条件为真时,循环执行。无论条件真假,至少运行一次
Do Until … Loop直到条件为真时,循环执行
Do … Loop Until直到条件为真时,循环执行。无论条件真假,至少运行一次

下面是上述某些循环结构的例子:
(1)For … Next 循环
使用 For … Next循环可以指定次数,在制定次数没有到达上限之前循环执行一段代码。

(2)For 循环
For 循环使用一个数字变量,从初始值开始,每循环一次,变量值增加或减小,直到变量的值等于指定的结束值时,循环结束。
For … Next 循环语法如下:

For [变量] = [初始值] To [结束值] Step [步长]
    '这里是循环执行的语句
Next

其中:

[变量] 是一个数字类型变量,可在循环执行的语句里使用。
[初始值] 和 [结束值] 是给定的值;
[步长]是每次循环时,变量的增量。如果为正值,变量增大;如果为负值,变量减小。

下面看一个实际的例子,求 1 至 100内 数字的奇数累积和。

Sub VBAexample()

    Dim i As Integer
    Dim sum As Integer
    
    For i = 1 To 100 Step 2
        sum = sum + i
    Next
    
End Sub

循环变量i的取值分别是1、3、5、7…99,当最后i=101时,不在满足小于100的条件,循环结束。

值得注意的是,For 循环的 Step 值如果是 1,则 Step 关键词可省略。

(3)Do While …循环
Do While循环用于满足指定条件时循环执行一段代码的情形。循环的指定条件在 While关键词后书写。

(4)Do While … Loop循环
根据 While 关键词后的条件表达式的值,真时执行,假时跳出循环转而执行Loop后的代码。基本语法如下:

Do While [条件表达式]
    '循环执行的代码
Loop

依旧看刚才求 1- 100内奇数累积和的例子。

Sub VBAexample()

    Dim i As Integer
    Dim sum As Integer
    
    i = 1
    Do While i <= 100
        sum = sum + i
        i = i + 2
    Loop
    
End Sub

i变量的初始值是 1,根据 While 后的条件,只要 i 变量小于等于 100,后续的代码就可以一直循环执行。

其他循环结构的代码类似。

4. with结构

个人感觉这个结构特别像c的结构体,只不过不用先在主函数外面定义结构体。使用 With 结构定义一个对象,通过【.】调用其内置参数,这样可以避免重复写同一个对象名,从而精简代码量。
with结构基本语法如下:

With [对象]
    .[属性] = [数据]
    .[方法]
    '其他属性和方法
End With

With 结构里,对象的属性和方法均有点 (.)符号开始,后接对象的属性名和方法名。

下面是With 结构的一个实例
若需要将工作簿中 Sheet1 工作表设置新名称,然后设置标签颜色为黑色,最后隐藏工作表。

(1)不用 With 结构,代码如下:

Sub VBAexample()
    Worksheets("Sheet1").Name = "新名称"
    Worksheets("Sheet1").Tab.ThemeColor = xlThemeColorLight1
    Worksheets("Sheet1").Visible = xlSheetHidden
End Sub

可以看到,每个语句都重复写 Worksheets(“Sheet1”) 部分。

(2)使用with结构,代码如下:

Sub VBAexample()

Sub VBAexample()
    With Worksheets("Sheet1")
        .Name = "新名称"
        .Tab.ThemeColor = xlThemeColorLight1
        .Visible = xlSheetHidden
    End With
End Sub

5、常用对象选择、操作

(1)改变背景色

Range("A3").Interior.ColorIndex = xlNone

ColorIndex参数选择:
在这里插入图片描述
(2)改变文字颜色

Range("A3").Font.ColorIndex = 4

(3)获取单元格

Cells(2, 4)
Range("A4")

(4)获取范围

Range(Cells(4, 5), Cells(8, 9))
Range("a2:c7") '用快捷记号引用单元格
Worksheets("Sheet2").[A2:B6]

(5)选中某sheet

Set NewSheet = Sheets("sheet2")
NewSheet.Select

(6)隐藏文档

Application.Visible = False

(7)禁止屏幕更新

Application.ScreenUpdating = False

(8)禁止显示提示和警告消息

Application.DisplayAlerts = False

(9)文件夹做成

strPath = "C:\temp\"
MkDir strPath

(10)状态栏文字表示

Application.StatusBar = "计算中"

(11)选中或激活某单元格

“Range”对象的的Select方法可以选择一个或多个单元格,而Activate方法可以指定某一个单元格为活动单元格

'下面的代码首先选择A1:E10区域,同时激活D4单元格:
       Range("a1:e10").Select
       Range("d4:e5").Activate
'而对于下面的代码:
       Range("a1:e10").Select
       Range("f11:g15").Activate
'由于区域A1:E10和F11:G15没有公共区域,将最终选择F11:G15,并激活F11单元格。

(12)获得文档的路径和文件名

ActiveWorkbook.Path    '路径
ActiveWorkbook.Name   '名称
ActiveWorkbook.FullName  '路径+名称
'或将ActiveWorkbook换成thisworkbook

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2244957.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

绿光一字线激光模组:工业制造与科技创新的得力助手

在现代工业制造和科技创新领域&#xff0c;绿光一字线激光模组以其独特的性能和广泛的应用前景&#xff0c;成为了不可或缺的关键设备。这种激光模组能够发射出一条明亮且精确的绿色激光线&#xff0c;具有高精度、高稳定性和长寿命的特点&#xff0c;为各种精密加工和测量需求…

Python Turtle绘图:重现汤姆劈树的经典瞬间

Python Turtle绘图&#xff1a;重现汤姆劈树的经典瞬间 &#x1f980; 前言 &#x1f980;&#x1f41e;往期绘画&#x1f41e;&#x1f40b; 效果图 &#x1f40b;&#x1f409; 代码 &#x1f409; &#x1f980; 前言 &#x1f980; 《汤姆与杰瑞》&#xff08;Tom and Jerr…

Oracle - 多区间按权重取值逻辑 ,分时区-多层级-取配置方案(二)

Oracle - 多区间按权重取值逻辑 &#xff0c;分时区-多层级-取配置方案https://blog.csdn.net/shijianduan1/article/details/133386281 某业务配置表&#xff0c;按配置的时间区间及组织层级取方案&#xff0c;形成报表展示出所有部门方案的取值&#xff1b; 例如&#xff0…

DataGear 5.2.0 发布,数据可视化分析平台

DataGear 企业版 1.3.0 已发布&#xff0c;欢迎体验&#xff01; http://datagear.tech/pro/ DataGear 5.2.0 发布&#xff0c;图表插件支持定义依赖库、严重 BUG 修复、功能改进、安全增强&#xff0c;具体更新内容如下&#xff1a; 重构&#xff1a;各模块管理功能访问路径…

详解八大排序(一)------(插入排序,选择排序,冒泡排序,希尔排序)

文章目录 前言1.插入排序&#xff08;InsertSort&#xff09;1.1 核心思路1.2 实现代码 2.选择排序&#xff08;SelectSort&#xff09;2.1 核心思路2.2 实现代码 3.冒泡排序&#xff08;BubbleSort&#xff09;3.1 核心思路3.2 实现代码 4.希尔排序&#xff08;ShellSort&…

02 —— Webpack 修改入口和出口

概念 | webpack 中文文档 | webpack中文文档 | webpack中文网 修改入口 webpack.config.js &#xff08;放在项目根目录下&#xff09; module.exports {//entry设置入口起点的文件路径entry: ./path/to/my/entry/file.js, }; 修改出口 webpack.config.js const path r…

《InsCode AI IDE:编程新时代的引领者》

《InsCode AI IDE&#xff1a;编程新时代的引领者》 一、InsCode AI IDE 的诞生与亮相二、独特功能与优势&#xff08;一&#xff09;智能编程体验&#xff08;二&#xff09;多语言支持与功能迭代 三、实际应用与案例&#xff08;一&#xff09;游戏开发案例&#xff08;二&am…

ubuntu 16.04 中 VS2019 跨平台开发环境配置

su 是 “switch user” 的缩写&#xff0c;表示从当前用户切换到另一个用户。 sudo 是 “superuser do” 的缩写&#xff0c;意为“以超级用户身份执行”。 apt 是 “Advanced Package Tool” 的缩写&#xff0c;Ubuntu中用于软件包管理的命令行工具。 1、为 root 用户设置密码…

[Docker#11] 容器编排 | .yml | up | 实验: 部署WordPress

目录 1. 什么是 Docker Compose 生活案例 2. 为什么要使用 Docker Compose Docker Compose 的安装 Docker Compose 的功能 使用步骤 核心功能 Docker Compose 使用场景 Docker Compose 文件&#xff08;docker-compose.yml&#xff09; 模仿示例 文件基本结构及常见…

C++时间复杂度与空间复杂度

一、时间复杂度&#xff08;Time Complexity&#xff09; 1. 概念 时间复杂度是用来衡量算法运行时间随着输入规模增长而增长的量级。它主要关注的是算法执行基本操作的次数与输入规模之间的关系&#xff0c;而非具体的运行时间&#xff08;因为实际运行时间会受硬件、编程语…

【Linux】【Shell】Shell 基础与变量

Shell 基础 Shell 基础查看可用的 Shell判断当前 Shell 类型 变量环境变量查看环境变量临时环境变量永久环境变量PATH 变量 自定义变量特殊赋值(双引号、单引号、反撇号) 预定义变量bashrc Shell 基础 Shell 是一个用 C 语言编写的程序&#xff0c;相当于是一个翻译&#xff0c…

【SpringBoot】26 实体映射工具(MapStruct)

Gitee 仓库 https://gitee.com/Lin_DH/system 介绍 现状 为了让应用程序的代码更易于维护&#xff0c;通常会将项目进行分层。在《阿里巴巴 Java 开发手册》中&#xff0c;推荐分层如下图所示&#xff1a; 每层都有对应的领域模型&#xff0c;即不同类型的 Bean。 DO&…

理解和选择Vue的组件风格:组合式API与选项式API详解

目录 前言1. Vue 的两种组件风格概述1.1 选项式 API&#xff1a;直观且分块清晰1.2 组合式 API&#xff1a;灵活且逻辑集中 2. 深入理解组合式 API 的特点2.1 响应式变量与函数式编程2.2 逻辑组织更清晰2.3 更好的代码复用 3. 应用场景分析&#xff1a;如何选择 API 风格3.1 适…

Windows和mac OS共用VMware虚拟机

在Windows下使用VMware Workstation Pro创建的虚拟机&#xff0c;是以文件夹形式存储在硬盘中的&#xff0c;在mac OS中对应的虚拟机产品是VMware Fusion&#xff0c;那么在Windows下创建的虚拟机怎么在mac OS中使用呢&#xff1f; 在下图中我们可以看到&#xff0c;Windows 1…

【K8S系列】Kubernetes Pod节点ImagePullBackOff 状态及解决方案详解【已解决】

在 Kubernetes 中,当某个 Pod 的容器无法从指定的镜像仓库拉取镜像时,Pod 的状态会变为 ImagePullBackOff。这通常是因为指定的镜像不存在、镜像标签错误、认证失败或网络问题等原因。 以下是关于 ImagePullBackOff 的详细分析及解决方案。 1. ImagePullBackOff 状态分析 1.…

04 —— Webpack打包CSS代码

加载器css-loader &#xff1a;解析css代码 webpack 中文文档 | webpack中文文档 | webpack中文网 加载器style-loader&#xff1a;把解析后的css代码插入到DOM style-loader | webpack 中文文档 | webpack中文文档 | webpack中文网 准备css代码&#xff0c;放到src/login目…

单元测试框架gtest学习(二)—— 认识断言

前言 我们在上一篇文章中&#xff0c;简要介绍了gtest是如何使用的 单元测试框架gtest学习&#xff08;一&#xff09;——初始gtest-CSDN博客 这篇文章我们主要总结gtest中的所有断言相关的宏。首先需要明确的是&#xff0c;gtest是通过各种断言宏进行测试的&#xff0c;而这…

网安瞭望台第2期:零日漏洞密集爆发、2024年常见网络安全漏洞类型及分析

国内外要闻 Ubuntu 服务器 Needrestart 软件包惊现严重安全漏洞 近日&#xff0c;Ubuntu 服务器&#xff08;自 21.04 版本起默认安装&#xff09;的 Needrestart 软件包被曝存在多个可追溯至数十年前的安全漏洞。这些漏洞允许本地攻击者在无需用户交互的情况下获取根…

PDF内容提取,MinerU使用

准备环境 # python 3.10 python3 -m pip install huggingface_hub python3 -m pip install modelscope python3 -m pip install -U magic-pdf[full] --extra-index-url https://wheels.myhloli.com下载需要的模型 import json import osimport requests from huggingface_hub…

【TDOA最小二乘解算】两步最小二乘迭代的TDOA解算方法,适用于二维平面、自适应锚点(附MATLAB代码)

本文所述的MATLAB代码实现了一个基于两步加权最小二乘法的二维目标定位算法&#xff0c;利用多个锚点&#xff08;基站&#xff09;和时间差到达&#xff08;TDOA&#xff09;数据来估计未知目标的位置。 文章目录 运行结果代码代码功能概述代码结构和详细说明初始化部分参数和…