Excel——宏教程(精简版)
一、宏的简介
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 '选择sheet1Cells.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 IntegerlocalNum = 22'给对象类型变量赋值Dim obj As RangeSet 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的单元格,查看其值是否大于100Cells(i,"C") = "是" '大于100则在Ci单元格填入“是”End IfNext 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 IntegerDim sum As IntegerFor i = 1 To 100 Step 2sum = sum + iNextEnd 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 IntegerDim sum As Integeri = 1Do While i <= 100sum = sum + ii = i + 2LoopEnd 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 = xlThemeColorLight1Worksheets("Sheet1").Visible = xlSheetHidden
End Sub
可以看到,每个语句都重复写 Worksheets(“Sheet1”) 部分。
(2)使用with结构,代码如下:
Sub VBAexample()
Sub VBAexample()With Worksheets("Sheet1").Name = "新名称".Tab.ThemeColor = xlThemeColorLight1.Visible = xlSheetHiddenEnd 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").SelectRange("d4:e5").Activate
'而对于下面的代码:Range("a1:e10").SelectRange("f11:g15").Activate
'由于区域A1:E10和F11:G15没有公共区域,将最终选择F11:G15,并激活F11单元格。
(12)获得文档的路径和文件名
ActiveWorkbook.Path '路径
ActiveWorkbook.Name '名称
ActiveWorkbook.FullName '路径+名称
'或将ActiveWorkbook换成thisworkbook
相关文章:
Excel——宏教程(精简版)
一、宏的简介 1、什么是宏? Excel宏是一种自动化工具,它允许用户录制一系列操作并将其转换为VBA(Visual Basic for Applications)代码。这样,用户可以在需要时执行这些操作,以自动化Excel任务。 2、宏的优点 我们可以利用宏来…...
C++中的std::tuple和std::pair
在C标准库中,std::tuple和std::pair是两种极具实用性的数据结构,它们都具备存储多个元素的功能,但各自有其独特的适用环境和特性。本文旨在深入探讨这两者之间的区别,并阐述在不同应用场景下应如何合理选择使用。 一、基本概念 s…...
引力搜索算法
引力搜索算法过程,包括了初始化、适应度评估、质量计算、加速度计算、更新速度和位置的一些步骤。 import numpy as np import random as rd from math import exp, sqrt import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D from matplotli…...
【时间之外】IT人求职和创业应知【35】-RTE三进宫
目录 新闻一:京东工业发布11.11战报,多项倍增数据体现工业经济信心提升 新闻二:阿里云100万核算力支撑天猫双11,弹性计算规模刷新纪录 新闻三:声网CEO赵斌:RTE将成为生成式AI时代AI Infra的关键部分 认知…...
Linux的目录结构
/ ├── bin # Binary - 存放用户可以直接使用的基本二进制可执行文件 ├── sbin # System Binaries - 存放系统管理员专用的二进制可执行文件 ├── usr # Unix System Resources - 存放用户使用的软件和库文件 │ ├── bin # Binary - 用户级应用程序…...
python: generator IDAL and DAL using sql server 2019
其它数据库也是一样的思维方式 create IDAL # encoding: utf-8 # 版权所有 2024 ©涂聚文有限公司 # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述: # Author : geovindu,Geovin Du 涂聚文. # IDE : P…...
命令执行简单
前言:小迪安全2022第一节反弹shell,小迪用的是两台都是云服务器,没有服务器可以在自己的主机上搭建也是可以的,主机上搭两个网站 思路:生成一个木马文件,下载到本机,然后利用本机上传到目标主机…...
【一句话经验】亚马逊云EC2 ubuntu24.04.1开启ROOT登录Permission denied (publickey)
按照常规的方法SSH登录会一直报错: Permission denied (publickey) 因为亚马逊云的默认配置不是在/etc/ssh/sshd_config,而是在引入的文件里了,所以在instance控制台输入这行命令来解除登录限制: sudo sed -i s/^PasswordAuthe…...
百度智能云千帆大模型平台引领企业创新增长
本文整理自百度世界大会 2024——「智能跃迁 产业加速」论坛的同名演讲。 更多大会演讲内容,请访问: https://baiduworld.baidu.com 首先,跟大家分享一张图,这个是我们目前大模型应用落地的场景分布。可以看到,大模型…...
【Linux】深入理解GCC/G++编译流程及库文件管理
目录 1.背景知识 2.gcc/g如何完成编译 (1) 预处理(进行宏替换) (2) 编译(生成汇编) (3) 汇编(生成机器可识别代码) (4) 链接(生成可执行文件或库文件) (5) 总结 (6) 函数库 …...
【Unity基础】对比Unity中两种粒子系统
在Unity中,Particle System和Visual Effect Graph (VFX) 都是用于创建粒子效果的工具,但它们的设计目标、使用场景和功能特点有所不同。以下是详细对比: 1. Particle System 特点 传统粒子系统,Unity自带的模块化粒子特效工具。…...
琐碎笔记——pytest实现前置、后置、参数化、跳过用例执行以及重试
pytest的fixture中文介绍可参考(不过文档稍微有点老): https://www.osgeo.cn/pytest/fixture.html#what-fixtures-are pytest各个作用域的fixture scope “function” 可作用于每个用例 fixture使用的声明放在类定义前面,类中的…...
C# 深层副本与浅层副本 深拷贝与浅拷贝
C# 深层副本与浅层副本 数据复制是编程中的重要任务。 对象是 OOP 中的复合数据类型。 对象中的成员字段可以按值或按引用存储。 可以以两种方式执行复制。 浅表副本将所有值和引用复制到新实例中。 引用所指向的数据不会被复制; 仅指针被复制。 新的引用指向原始…...
CH06_Lambda表达式
第6章:Lambda表达式 本章目标 为什么要学习C#编程语言 了解C#相关常识 C#开发工具Visual Studio安装 掌握C#程序的开发步骤 掌握C#的注释 掌握C#的常用转义符 本章内容 lambda表达式演变史 C# 匿名函数的演变历史可以追溯到 C# 语言的不同版本,…...
大模型本地部署实践:Ollama+Open-WebUI(MacOS)
目录 什么是Ollama Ollama安装 对话界面可视化?Open-WebUI! 安装Open-WebUI 什么是Ollama Ollama是一个为简化大语言模型本地部署与交互的开源框架。它提供了用户友好的接口,帮助开发者和模型爱好者在没有依赖外部API的基础上高效地运行、…...
JavaScript——DOM编程、JS的对象和JSON
一、DOM编程 DOM(Document Object Model)编程:就是使用document对象的API,完成对网页HTML文档进行动态修改,以实现网页数据,和样式动态变化效果的编程。 (一)DOM获取元素的多种方法 1.查找元素的函数 getElementById("id值…...
SIMCom芯讯通A7680C在线升级:FTP升级成功;http升级腾讯云对象储存的文件失败;http升级私有服务器的文件成功
从事嵌入式单片机的工作算是符合我个人兴趣爱好的,当面对一个新的芯片我即想把芯片尽快搞懂完成项目赚钱,也想着能够把自己遇到的坑和注意事项记录下来,即方便自己后面查阅也可以分享给大家,这是一种冲动,但是这个或许并不是原厂希望的,尽管这样有可能会牺牲一些时间也有哪天原…...
OSRM docker环境启动
命令一把梭 wget https://download.geofabrik.de/asia/china-latest.osm.pbf docker pull osrm/osrm-backend docker run -t -v "${PWD}:/data" osrm/osrm-backend osrm-extract -p /opt/car.lua /data/china-latest.osm.pbf docker run -t -v "${PWD}:/data&q…...
Vue3 动态获取 assets 文件夹图片
我真服了Vue3 这个老六了,一个简单图片src 赋值搞得那么复杂. //item.type 是我遍历类型的类型参数 <img alt"吐槽大会" :src"getAssetUrl(item.type)" /> 基于 Vue2 的Webpack 处理,还不错,可以用/ 这种绝对路径,可以接受,虽然多了个require很不爽…...
<项目代码>YOLOv8 草莓成熟识别<目标检测>
YOLOv8是一种单阶段(one-stage)检测算法,它将目标检测问题转化为一个回归问题,能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法(如Faster R-CNN),YOLOv8具有更高的…...
代码随想录算法训练营第五十一天|Day51 图论
岛屿数量 深搜 https://www.programmercarl.com/kamacoder/0099.%E5%B2%9B%E5%B1%BF%E7%9A%84%E6%95%B0%E9%87%8F%E6%B7%B1%E6%90%9C.html 思路 #include <stdio.h> #define MAX_SIZE 50 int grid[MAX_SIZE][MAX_SIZE]; int visited[MAX_SIZE][MAX_SIZE]; int N, M; …...
uniapp 自定义加载组件,全屏加载,局部加载 (微信小程序)
效果图 全屏加载 页面加载使用 局部加载 列表加载里面使用 使用gif html <template><view><view class"" v-if"typeFullScreen"><view class"loading" v-if"show"><view class""><i…...
STM32完全学习——系统时钟设置
一、时钟框图的解读 首先我们知道STM32在上电初始化之后使用的是内部的HSI未经过分频直接通过SW供给给系统时钟,由于内部HSI存在较大的误差,因此我们在系统完成上电初始化,之后需要将STM32的时钟切换到外部HSE作为系统时钟,那么我…...
Github 2024-11-16Rust开源项目日报 Top10
根据Github Trendings的统计,今日(2024-11-16统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Rust项目10Go项目1Python项目1Lapce:用 Rust 编写的极快且强大的代码编辑器 创建周期:2181 天开发语言:Rust协议类型:Apache License 2.0St…...
CH03_反射
第3章:反射 本章目标 掌握反射的原理 熟悉反射的基本运用 本章内容 反射是什么 C# 编译运行过程 首先我们在VS点击编译的时候,就会将C#源代码编译成程序集 程序集以可执行文件 (.exe) 或动态链接库文件 (.dll) 的形式实现 程序集中包含有Microsoft …...
vue2侧边导航栏路由
<template><div><!-- :default-active"$route.path" 和index对应其路径 --><el-menu:default-active"active"class"el-menu-vertical-demo"background-color"#545c64"text-color"#fff"active-text-col…...
core 不可变类型 线程安全 record
当一个类型的对象在创建时被指定状态后,就不会再变化的对象,我们称之为不可变类型。这种类型是线程安全的,不需要进行线程同步,非常适合并行计算的数据共享。它减少了更新对象会引起各种bug的风险,更为安全。 System.D…...
linux之调度管理(8)-SMP cpu 的 psci启动
一、psci介绍 psci是arm提供的一套电源管理接口,当前一共包含0.1、0.2和1.0三个版本。它可被用于以下场景: (1)cpu的idle管理 (2)cpu hotplug以及secondary cpu启动 (3)系统shutdo…...
review-消息中间件MQ
RabbitMQ RabbitMQ,作为当今流行的开源消息代理软件,以其卓越的可靠性、灵活性和易用性在微服务架构和分布式系统中扮演着至关重要的角色。它不仅能够确保消息在不同系统组件间的高效传递,还能通过其高级消息队列协议(AMQP&#x…...
leetcode400第N位数字
代码 class Solution {public int findNthDigit(int n) {int base 1;//位数int weight 9;//权重while(n>(long)base*weight){//300n-base*weight;base;weight*10;}//n111 base3 weight900;n--;int res (int)Math.pow(10,base-1)n/base;int index n%base;return String…...
深圳网站建设价钱/百度代理公司查询
在Windows 10中,我们可以注销Linux子系统的发行版,也可以将其重置为默认值。重置后,当我们下次启动它时,Windows 10将安装一个干净的、未配置的Linux子系统发行版副本,这样,我们就可以从头配置Linux子系统&…...
superstore wordpress下载/怎么做神马搜索排名seo
---恢复内容开始---整体知识介绍:mysql基本操作和使用,mysql优化(索引,分表等),mysql部署(读写分离,负载均衡等)数据库基本介绍:数据库概念,常用数据库,web应用三大软件分工…...
16岁的做兼职在什么网站好/上海网站排名优化公司
PQ_DISTRIBUTE是并行的hints中稍微复杂一点的一个下面就这个hints做以下说明:1.使用格式/* PQ_DISTRIBUTE(tablespec outer_distribution inner_distribution )*/tablespec:表名outer_distribution:外表如何分割inner_distribution:内表如何分割2.选项说明(1)HASH, …...
深圳专业网站建设制作/搜索引擎优化的核心是
使用两个具有多DAC同步功能的AD9139器件进行宽带基带I/Q发射器设计Circuits from the Lab参考设计是经过测试的参考设计,有助于加速设计,同时简化系统集成,帮助并解决当今模拟、混合信号和RF设计挑战。如需更多信息和技术支持,请访…...
宁波网站建设有限公司/沈阳网站seo排名公司
仅作为记录,大佬请跳过。 文章目录展示参考try{folder_group_index Convert.ToInt32(item.LabelInfo.Dimensioning);}catch{folder_group_index_string "unregular";}展示 参考 感谢大佬博主文章:传送门...
帝国网站7.2 pc wap 跳转/百度指数大数据分享平台
你是否想知道企业大规模系统是如何设计的? 在软件开发开始之前,我们必须选择一个合适的架构,能提供所需的功能和质量特性。因此,在将架构应用到我们的设计之前,我们应该了解各种不同架构的特点。 01、什么是架构模式 根据维基百…...