二、Excel VBA 简单使用
Excel VBA 从入门到出门 |
---|
一、Excel VBA 是个啥? |
二、Excel VBA 简单使用 |
- 👋Excel VBA 简单使用
- ⚽️1. 如何在Excel中手动编写VBA代码
- ⚽️2. 如何在 Excel 中运行 VBA 代码
- ⚽️3. 如何在Excel中记录VBA代码
- ⚽️4. 如何在Excel中编辑录制的VBA代码
- ⚽️5. 如何将 VBA 代码分配给 Excel 中的按钮
- ⚽️6. 更多 VBA Excel 示例
- ⚾️6.1 示例#1:循环访问一系列单元格
- ⚾️6.2 示例#2:条件结构
- ⚾️6.3 示例#3:错误处理
- ⚽️7. 掌握 Excel VBA 编程的 5 个技巧
- ⚽️8. 总结
- 👬 交友小贴士:
👋Excel VBA 简单使用
人们用 VBA 编写的大多数代码都是 Sub
和 Function
过程。因此,在本节中,我们将主要学习如何编写、编辑和运行它们。
⚽️1. 如何在Excel中手动编写VBA代码
要手动编写 VBA 代码,请按照以下步骤操作:
- 创建一个新的 Excel 工作簿。
- 按
Alt+F11
激活 VBE。 - 单击菜单栏中的
插入
>模块
。 - 手动键入或在编辑器中复制粘贴以下代码:
Sub ShowHello()MsgBox "Hello, World!"
End SubFunction ShowCurrentTime()ShowCurrentTime = "Current time: " & Now
End Function
- 如果需要,请按
Ctrl+S
保存代码。文件的扩展名需要是XLSM
,因为它包含宏。
代码解释:
- ShowHello() 是 Sub 过程的一个示例。每个 Sub 过程都以关键字 Sub 开始,并以 End Sub 结束。
- ShowCurrentTime() 是 Excel VBA 函数过程的示例。每个 Function 过程都以关键字 Function 开始,并以 End Function 结束。
⚽️2. 如何在 Excel 中运行 VBA 代码
Sub 过程和 Function 过程在 Excel 中的运行方式不同。两者都可以通过多种方式执行,但我们将只介绍其中的几种。
要执行 Excel VBA 函数过程:
您可以单击VBE 工具栏中的运行
按钮或只需按F5
即可执行相同的命令。Excel 执行光标所在的 Sub 过程。
或者,您可以通过按开发人员
选项卡中的宏
按钮从 Excel 执行子过程:
要执行 Function 过程:
您可以在工作表中使用它或从另一个过程(Sub 或另一个 Function 过程)调用它。
作为示例,让我们看看如何将 ShowCurrentTime 函数用作工作表公式来执行。为此,只需在单元格中键入 =ShowCurrentTime(),然后按Enter
即可。见下图:
⚽️3. 如何在Excel中记录VBA代码
将代码输入 VBA 模块的另一种方法是使用 Excel 宏记录器记录您的操作。结果始终是 Sub 过程。因此,我们不能使用这个工具作为创建函数的替代方法——它们必须通过我们自己编写和编辑代码来手动输入。
以下是录制宏的步骤:
- 转到
开发人员
选项卡并单击录制宏
按钮。 - 在
录制宏
对话框中,输入宏的名称。您还可以选择输入快捷键、宏位置和说明。
- 单击
确定
开始录制。 - 执行所有需要记录的操作。例如,我们只需手动输入 A1 到 A10 中的 1 到 10:
- 完成后,单击
开发人员
选项卡中的停止录制
按钮。
⚽️4. 如何在Excel中编辑录制的VBA代码
录制宏后,您可能会好奇代码是什么样子的。您甚至可能想知道录制的宏存储在哪里,对吧?嗯,默认情况下,它们存储在模块中。
因此,要查看和编辑录制的宏,首先需要通过按键盘上的 Alt+F11 激活 VBE。之后,双击创建的新模块并找到要编辑的代码。
例如,这是我们之前录制的AssignRowNumber宏:
Sub AssignRowNumber()
'
' AssignRowNumber Macro
' This procedure inserts row numbers to cells, 1 to 10.
'
' Keyboard Shortcut: Ctrl+Shift+M
'ActiveCell.FormulaR1C1 = "1"Range("A2").SelectActiveCell.FormulaR1C1 = "2"Range("A3").SelectActiveCell.FormulaR1C1 = "3"Range("A4").SelectActiveCell.FormulaR1C1 = "4"Range("A5").SelectActiveCell.FormulaR1C1 = "5"Range("A6").SelectActiveCell.FormulaR1C1 = "6"Range("A7").SelectActiveCell.FormulaR1C1 = "7"Range("A8").SelectActiveCell.FormulaR1C1 = "8"Range("A9").SelectActiveCell.FormulaR1C1 = "9"Range("A10").SelectActiveCell.FormulaR1C1 = "10"
End Sub
但是,您可能同意上述代码并不是为单元格赋值的最佳方法。它选择一个单元格,将值指定为公式,然后移动到下一个单元格。我们可以使用以下代码使代码更加紧凑、可读和动态:
Sub AssignRowNumber()
'
' AssignRowNumber Macro
' This procedure inserts row numbers to cells, 1 to 10.
'
' Keyboard Shortcut: Ctrl+Shift+M
'For i = 1 To 10ActiveSheet.Cells(i, 1).Value = iNext iEnd Sub
总之,宏记录器是进入 VBA 编程的好方法。然而,有时理解录制的宏可能会很复杂。好消息是,录制的宏在创建后可以进行自定义,使您可以更好地控制程序的功能和操作方式!
⚽️5. 如何将 VBA 代码分配给 Excel 中的按钮
您可以轻松地将按钮添加到 Excel 工作表并为其指定宏。只需几个简单的步骤即可做到这一点。
例如,让我们通过单击按钮来执行正在运行的 ShowHello() Sub 过程。
步骤如下:
- 单击
开发工具
选项卡,然后单击插入
>按钮(表单控件)
。
- 单击并拖动工作表上的任意位置以创建按钮。
- 在
分配宏
对话框中,选择ShowHello
,然后单击确定
。
- 默认情况下,创建
按钮 1
。单击按钮的文本并输入Show Hello
对其进行重命名。 - 要测试该按钮,请单击它。您会看到一个消息框出现,向您问好😉
⚽️6. 更多 VBA Excel 示例
⚾️6.1 示例#1:循环访问一系列单元格
许多宏对范围内的每个单元格进行操作,或者根据每个单元格的值执行选定的操作。这些宏通常包含一个 ForEach-Next 循环,用于处理范围内的每个单元格。
以下 SUMODDNUMBERS 函数演示如何循环遍历一系列单元格以对所有奇数求和。
Function SUMODDNUMBERS(range As range)Dim cell As rangeFor Each cell In rangeIf cell.Value Mod 2 = 1 ThenSUMODDNUMBERS = SUMODDNUMBERS + cell.ValueEnd IfNext cellEnd Function
要使用该函数,请在单元格中键入 =SUMODDNUMBERS() 并在参数中输入单元格范围。请参阅下面的屏幕截图:
⚾️6.2 示例#2:条件结构
以下示例演示如何使用 Select-Case 语句来使用决策结构。许多程序员喜欢 Select-Case 结构而不是 If-Then-Else,因为在检查多个条件时代码看起来更具可读性。
Sub ShowBudgetText()Dim Budget As LongDim Result As StringBudget = InputBox("Enter project budget: ")Select Case BudgetCase 0 To 5000: Result = "LOW"Case 5001 To 10000: Result = "MEDIUM"Case Is > 10000: Result = "HIGH"End SelectMsgBox "You have a " & Result & " budget."
End Sub
代码解释:
该代码提示用户输入一个值,对其进行计算,然后输出结果。它评估预算变量并检查三种不同的情况(0-5000、5001-10000 和大于 10000)。一旦 VBA 找到 TRUE case 并执行该特定块的语句,就会退出 Select-Case 结构。
⚾️6.3 示例#3:错误处理
您无法总是预测可能发生的每个错误。但如果可能的话,您应该捕获它们以确保您的程序不会在运行时崩溃。
下面是 VBA 中错误处理的三种方法。每种方法都有自己的优点和缺点,因此选择适合您需求的方法非常重要。
- On Error Resume Next 会忽略任何遇到的错误并防止代码停止。
- On Error GoTo 0 停止导致错误的行上的代码,并显示描述错误的消息框。
- On Error GoTo [Label] 允许您指定要对错误执行的操作。
让我们看一个例子。我们将在之前的 ShowBudgetText Sub 中添加 On Error GoTo [Label] 错误处理方法。这将捕获任何类型的运行时错误,然后在警告消息框中显示该错误。
Sub ShowBudgetText()Dim Budget As LongDim Result As StringOn Error GoTo ErrorHandlerBudget = InputBox("Enter project budget: ")Select Case BudgetCase 0 To 5000: Result = "LOW"Case 5001 To 10000: Result = "MEDIUM"Case Is > 10000: Result = "HIGH"End SelectMsgBox "You have a " & Result & " budget."ErrorHandler:MsgBox "Please enter a valid input.", vbExclamationEnd Sub
⚽️7. 掌握 Excel VBA 编程的 5 个技巧
学习任何新的编程语言一开始都会令人畏惧,但我们希望本文能为您学习 Excel VBA 提供一个良好的开端。
在最后一部分中,我们提供了五个重要提示,将帮助您踏上掌握该语言的旅程:
从学习编程基础知识开始
。如果您是编程新手,首先了解什么是变量、VBA 中的各种数据类型、如何使用循环和条件等非常重要。利用在线资源
。幸运的是,有大量资源可以帮助您学习基础知识。一旦您充分了解了编程基础知识,您将能够开始利用 Excel VBA 的更高级功能。熟悉常见的 Excel VBA 对象和方法
。一些最常用的 Excel VBA 对象包括 Range、Worksheet 和 Workbook。尝试使用录制宏功能
。这是感受 Excel VBA 的好方法,而无需自己编写任何代码。只需录制宏,然后编辑生成的代码即可根据您的需求进行自定义。别忘了玩得开心
!Excel VBA 可以是一个强大的工具,但它也意味着令人愉快。所以放松并享受学习新东西的过程。
⚽️8. 总结
本章介绍了Excel VBA的简单实用和案例。
👬 交友小贴士:
博主Github,Gitee同名账号,Follow 一下就可以一起愉快的玩耍了,更多精彩文章请持续关注。
相关文章:
二、Excel VBA 简单使用
Excel VBA 从入门到出门一、Excel VBA 是个啥?二、Excel VBA 简单使用 👋Excel VBA 简单使用 ⚽️1. 如何在Excel中手动编写VBA代码⚽️2. 如何在 Excel 中运行 VBA 代码⚽️3. 如何在Excel中记录VBA代码⚽️4. 如何在Excel中编辑录制的VBA代码⚽️5. 如…...
获取url后面的参数
方式一 final String queryString request.getQueryString(); System.out.println(queryString); //解码 System.out.println(URLDecoder.decode(queryString, StandardCharsets.UTF_8));测试: pageSize25&pageNum1&sort%5B%27id%27%5Ddesc&sort%5B%…...
python入门篇07-数据容器(序列 集合 字典,json初识)基础(下)
全文目录,一步到位 1.前言简介1.1 专栏传送门1.1.1 上文传送门 2. python基础使用2.1 序列2.1.1 序列定义2.1.2 序列参数解释2.1.3 列表list切片2.1.4 元组tuple切片2.1.5 字符串str切片 2.2 集合定义2.2.1 set集合-基本语法2.2.2 set集合-添加元素.add()2.2.3 set集合- 移除元…...
阿里云服务器公网带宽价格表“按固定带宽”计费模式
阿里云服务器公网带宽计费模式按固定带宽”计费多少钱1M?地域不同带宽价格不同,北京、杭州、深圳等大陆地域价格是23元/Mbps每月,中国香港1M带宽价格是30元一个月,美国硅谷是30元一个月,日本东京1M带宽是25元一个月&am…...
MTK的充电方案—PMIC充电
MTK目前有三套充电方案,主要如下: (1)线性充电——linering charge(PMIC充电) 充9停1,充电电流不能太大,目前最大能做到1.2A; (2)switch charge(…...
【Overload游戏引擎分析】画场景栅格的Shader分析
Overload引擎地址: GitHub - adriengivry/Overload: 3D Game engine with editor 一、栅格绘制基本原理 Overload Editor启动之后,场景视图中有栅格线,这个在很多软件中都有。刚开始我猜测它应该是通过绘制线实现的。阅读代码发现࿰…...
智能化物流管理:全国快递物流查询API的角色与优势
前言 当今社会,物流行业已经成为了国民经济的重要组成部分,而快递物流则是物流行业中的一个重要分支。随着信息技术的不断发展,智能化物流管理正逐渐成为快递物流领域的趋势,而全国快递物流查询API作为其中的一部分,在…...
Spring Boot如何配置CORS支持
Spring Boot如何配置CORS支持 CORS(跨源资源共享)是一种Web浏览器的安全性功能,用于控制网页上的脚本文件从不同的源加载其他网页资源。在开发现代Web应用程序时,通常需要跨域请求不同的资源,如API服务或其他Web应用程…...
Mybatis 拦截器(Mybatis插件原理)
Mybatis为我们提供了拦截器机制用于插件的开发,使用拦截器可以无侵入的开发Mybatis插件,Mybatis允许我们在SQL执行的过程中进行拦截,提供了以下可供拦截的接口: Executor:执行器ParameterHandler:参数处理…...
AXI总线协议基础--几分钟熟悉通道信号和基础架构
目录 一、AXI协议基础 1.1读写通道的基本架构图 1.2猝发操作举例 1.3传输顺序 二、各个通道中的信号描述 2.1全局信号 2.2写地址通道信号 2.3写数据通道信号 2.4写响应通道信号 2.5读地址通道信号 2.6读数据通道 三、通道握手 3.1单一信息传输时的握手过程 3.2不…...
matlab数学建模方法与实践 笔记汇总
matlab数学建模方法与实践 笔记汇总 写在最前面笔记1:快速入门1.导入数据2.数据探索3.多项式拟合4.发布功能5.数据类型6、全部代码 笔记2:数据的准备1.数据的读取与写入excel、txt读图读视频 2.数据预处理缺失值噪声过滤数据归约数据变换 3.数据统计4.数…...
[UE虚幻引擎] DTCopyFile 插件说明 – 使用蓝图拷贝复制文件 (Windows)
本插件可以在虚幻引擎中使用蓝图对系统的其他文件进行拷贝复制操作。 1. 节点说明 Async Copy File 异步复制文件 Param Source File : 要复制的源文件的完整路径。Param Target File : 要复制的目标文件的完整路径。Param Force Copy : 如果为true,则如果目标…...
如何用ChatGPT学或教英文?5个使用ChatGPT的应用场景!
原文:百度安全验证 AI工具ChatGPT的出现大幅改变许多领域的运作方式,就连「学英文」也不例外!我发现ChatGPT应用在英语的学习与教学上非常有意思。 究竟ChatGPT如何改变英文学习者(学生)与教学者(老师)呢? 有5个应用场景我感到…...
基于spirngboot人事考勤管理信息系统
一:功能介绍 本系统前端采用vue框架以及Elemnt-UI,后端采用springboot、mysql、redis、mybatis等技术栈。 主要功能有登录、员工考勤、数据统计、薪资管理、权限管理、打卡管理、考勤审核、请假审批、薪资发放、报表统计、文件上传、文件下载、考勤设置、请假设置。…...
QT界面窗口 (widget)的显示和隐藏,关闭
QT界面窗口的显示和隐藏,关闭_qt窗口隐藏关闭按钮_123无敌,就你了的博客-CSDN博客...
这7个AI软件让设计效率飞起,快来收藏 优漫动游
伴随着AI技术的发展,设计师使用AI工具来提高工作效率已成为一种趋势,越来越多的AI工具也出现在市场上。本文收集了市场上7个好用的AI工具推荐给大家,一起来看看吧! 这7个AI软件让设计效率飞起,快来收藏 1、即时AI…...
ElasticSearch环境准备
Elasticsearch 是一个基于 Apache Lucene™ 的开源搜索引擎。不仅仅是一个全文搜索引擎,它还是一个分布式的搜索和分析引擎,可扩展并能够实时处理大数据。以下是关于 Elasticsearch 的一些主要特点和说明: 1.实时分析:Elasticsear…...
JAVA练习百题之数组插入元素
题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。 程序分析 要将一个数插入已经排好序的数组中,我们可以采用以下步骤: 遍历数组,找到第一个大于待插入数的位置。将待插入数插入到该位…...
C++11常见语法
目录 lambda 表达式 可变模板参数 C11新类的默认函数 包装器 function bind lambda 表达式 lambda 表达式也是可调用对象,在C语言中就有函数指针,但是函数指针比较复杂。 而在C11之前,也有仿函数,使用仿函数,还…...
【数据分析】时间序列
UTC时间:时间戳是以格林威治时间1970年01月01日00时00分00秒为基准计算所经过时间的秒数,是一个浮点数。Python的内置模块time和datetime都可以对时间格式数据进行转换,如时间戳和时间字符串的相互转换。 报错记录:AR has been re…...
【图像算法相关知识点】
【图像算法工程师】 什么是图像处理? 图像处理是指对数字图像进行处理和分析,以达到特定的目的。例如,调整图像的颜色、对比度、亮度等参数,进行图像增强、去噪、分割、特征提取等操作,以及应用计算机视觉算法实现目标…...
竹云筑基,量子加密| 竹云携手国盾量子构建量子身份安全防护体系
9月23日-24日,2023量子产业大会在安徽合肥举行。作为量子科技领域行业盛会,2023年量子产业大会以“协同创新 量点未来”为主题,展示了前沿的量子信息技术、产业创新成果,并举办主旨论坛、量子科普讲座等系列专项活动。量子信息作为…...
数据结构P46(2-1~2-4)
2-1编写算法查找顺序表中值最小的结点,并删除该结点 #include <stdio.h> #include <stdlib.h> typedef int DataType; struct List {int Max;//最大元素 int n;//实际元素个数 DataType *elem;//首地址 }; typedef struct List*SeqList;//顺序表类型定…...
基于BERT模型进行文本处理(Python)
基于BERT模型进行文本处理(Python) 所有程序都由Python使用Spyder运行。 对于BERT,在运行之前,它需要安装一些环境。 首先,打开Spyder。其次,在控制台中单独放置要安装的: pip install transformers pip install tor…...
妙鸭相机功能代码复现
妙鸭相机功能代码复现 妙鸭相机主要实现人脸替换与人脸高清增强修复功能。可通过两种方式实现Roop和Lora模型。 RooP笔记 基础模型:inswapper_128.onnx 人脸分析模型:insightface 高清增强模型:gfpgan 大体流程为通过insightface检测出人脸,替换人脸,使用gfpgan对人…...
使用Java Spring Boot构建高效的爬虫应用
本文将介绍如何使用Java Spring Boot框架来构建高效的爬虫应用程序。通过使用Spring Boot和相关的依赖库,我们可以轻松地编写爬虫代码,并实现对指定网站的数据抓取和处理。本文将详细介绍使用Spring Boot和Jsoup库进行爬虫开发的步骤,并提供一…...
归并排序与非比较排序详解
W...Y的主页 😊 代码仓库分享 💕 🍔前言: 上篇博客我们讲解了非常重要的快速排序,相信大家已经学会了。最后我们再学习一种特殊的排序手法——归并排序。话不多说我们直接上菜。 目录 归并排序 基本思想 递归思路…...
第85步 时间序列建模实战:CNN回归建模
基于WIN10的64位系统演示 一、写在前面 这一期,我们介绍CNN回归。 同样,这里使用这个数据: 《PLoS One》2015年一篇题目为《Comparison of Two Hybrid Models for Forecasting the Incidence of Hemorrhagic Fever with Renal Syndrome i…...
【MATLAB源码-第36期】matlab基于BD,SVD,ZF,MMSE,MF,SLNR预编码的MIMO系统误码率分析。
1、算法描述 1. MIMO (多输入多输出):这是一个无线通信系统中使用的技术,其中有多个发送和接收天线。通过同时发送和接收多个数据流,MIMO可以增加数据速率和系统容量,同时提高信号的可靠性。 2. BD (块对角化):这是一…...
Uniapp 新手专用 抖音登录 获取用户头像、名称、openid、unionid、anonymous_openid、session_key
TC-dylogin 一定请选择 源码授权版 教程 第一步 将代码拷贝至您所需要的页面 该代码位置:pages/index.vue 第二步 修改appid和secret 第三步 获取appid和secret 获取appid和secret链接 注意事项 为了安全,我将默认的自己的appid和secret在云函数中删…...
开发网站开票名称是什么/如何投放网络广告
3、评测平台介绍及方法说明AMD FM1(APU)平台CPU AMD A6-3650(4核/4线程)主板 华硕 F1A75-M PRO(A75)内存 宇瞻 DDR3-1600 2G x 2(8-8-8-24)硬盘 日立 1TB显卡 Radeon HD 6530D(APU内置)Radeon HD 6670 双显卡交火Radeon HD 6570 双显卡交火Intel LGA1155平台CPU Intel Core i3 …...
昆明网站设计方案/我赢网提供的高水平网页设计师
CentOS MySQL安装目录在哪可以通过下面这些方法查看MySQL在centos上的安装目录:一、查看文件安装路径安装了mysql,但是不知道文件都安装在哪些地方、放在哪些文件夹里,可以用下面的命令查看所有的文件路径whereis mysql回车,如果你…...
驾校一点通网站怎么做/百度seo排名优化提高流量
https://jingyan.baidu.com/article/375c8e1997eb2e25f3a2297c.html http://blog.csdn.net/wwwang89123/article/details/11325207 1. 什么是回调? 1) A类想要执行某个方法(如方法:run),但是A类自己无法实现这个方法,这个时候A…...
网站设计中国内优秀企业网站欣赏/it菜鸡网seo
我们寻常意义上的站长工具,是站长建站时用于对网站质量查询与制作的一些工具。 最为常见的特点,是查询SEO之于搜索引擎的数据变化,可以检测网站死链接、蜘蛛访问、HTML格式检测、网站速度测试、友情链接检查、网站域名IP查询等等。 但我们今…...
怎么做赌钱网站代理/杭州关键词优化测试
消息队列 消息队列技术是分布式应用间交换信息的一种技术。消息队列可驻留在内存或磁盘上, 队列存储消息直到它们被应用程序读走。通过消息队列,应用程序可独立地执行--它们不需要知道彼此的位置、或在继续执行前不需要等待接收程序接收此消息。在分布式计算环境中&…...
建一个网站都需要什么/seo搜索引擎优化实训总结
合并效果图 Bootstrap其他请求的属性我们就不写了 和平常的一样 重点是columns var columns [ [ { field : merchantId, title : 商户ID, align : center, colspan : 1, rowspan : 2 …...