二、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 编写的大多数代码都是 SubFunction 过程。因此,在本节中,我们将主要学习如何编写、编辑和运行它们。

⚽️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 一下就可以一起愉快的玩耍了,更多精彩文章请持续关注。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

集合的基本运算

集合的运算等式: 常用的集合运算不等式: 、 试题 A,B,C是集合,证明:(A-B)-CA-(B∪C) 【答案】 设A、B、C是集合,证明 (A∪B)-C(A-C)∪(B-C)。 【答案】 已知A{1,2,3},A-B{1,2}&…

css图形化理解--扭曲函数skew()

transform: skewX(30deg);transform: skewY(45deg);transform: skew(30deg,45deg);transform: skewX(angleX);transform: skewY(angleY);transform: skew(angleX,angleY); 是CSS中的一个2D变换方法,它用于对元素沿X轴、Y轴进行倾斜变换。其中,angle表示倾…

通过位运算,实现单字段标识多个状态位

可能经常有如下这种需求: 需要一张表,来记录学员课程的通过与否. 课程数量不确定,往往很多,且会有变动,随时可能新增一门课. 这种情况下,在设计表结构时,一门课对应一个字段,就有些不合适, 因为不知道课程的具体数量,也无法应对后期课程的增加. 考虑只用一个状态标志位,利用位运…

【软考】9.1 顺序表/链表/栈和队列

《线性结构》 顺序存储和链表存储 每个元素最多只有一个出度和一个入度,表现为一条线状链表存储结构:每个节点有两个域,即数据,指针域(指向下一个逻辑上相邻的节点) 时间复杂度:与其数量级成正…

微信小程序使用路由传参和传对象的方法

近期在做微信小程序开发,在页面跳转时,需要携带参数到下一个页面,尤其是将对象传入页面。为了方便重温,特此记录。 路由传字符串参数 原始页面 传递字符串参数比较简单。路由跳转有两种方式,一种是通过navigator组件…

【Java接口性能优化】skywalking使用

skywalking使用 提示:微服务中-skywalking使用 文章目录 skywalking使用一、进入skywalking主页二、进入具体服务1.查看接口 一、进入skywalking主页 二、进入具体服务 可以点击列表或搜索后,点击进入具体服务 依次选择日期、小时、分钟 1.查看接口 依次…

聊天、会议、多媒体一体化:多平台支持的即时通讯系统 | 开源日报 No.44

harness/gitness Stars: 28.2k License: Apache-2.0 Gitness 是一个建立在 Drone 之上的新型开源开发者平台,具备代码托管和流水线功能。它提供了以下核心优势: 轻量级、超快速的代码托管和持续集成服务支持 Docker 容器化部署可以在本地环境中构建和…

【Acwing1010】拦截导弹(LIS+贪心)题解

题目描述 思路分析 本题有两问,第一问直接用lis的模板即可,下面重点看第二问 思路是贪心: 贪心流程: 从前往后扫描每一个数,对于每个数: 情况一:如果现有的子序列的结尾都小于当前的数&…

【网络安全 --- kali2023安装】超详细的kali2023安装教程(提供镜像资源)

如果你还没有安装vmware 虚拟机,请参考下面博客安装 【网络安全 --- 工具安装】VMware 16.0 详细安装过程(提供资源)-CSDN博客【网络安全 --- 工具安装】VMware 16.0 详细安装过程(提供资源)https://blog.csdn.net/m0…

Unity可视化Shader工具ASE介绍——3、ASE的Shader类型介绍

大家好,我是阿赵。这里继续介绍Unity可视化Shader编辑插件ASE的用法。   上一篇介绍了节点的输入输出节点。这一篇来介绍一下不同的Shader类型的区别。 一、修改Shader类型 之前介绍创建Shader的时候,曾经说过可以选择Shader的类型。 其实这个类型是…

【版本控制工具一】Git 安装注册及使用

文章目录 一、Git 、Github、Gitee1.1 概述1.2 码云 相对于 github 的优势 二、Github 或 Gitee注册2.1 注册2.2 创建仓库 三、Git下载与安装四、创建本地仓库 一、Git 、Github、Gitee 1.1 概述 Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或…

c语言进阶部分详解(详细解析字符串常用函数,并进行模拟实现(下))

上篇文章介绍了一些常用的字符串函数,大家可以跳转过去浏览一下:c语言进阶部分详解(详细解析字符串常用函数,并进行模拟实现(上))_总之就是非常唔姆的博客-CSDN博客 今天接着来介绍一些&#x…

扭线机控制

扭线机属于线缆加工设备,线缆加工设备种类非常多。有用于网线绞合的单绞,双绞机等,有关单绞机相关算法介绍,大家可以查看专栏相关文章,有详细介绍,常用链接如下: 线缆行业单绞机控制算法&#…

性能测试笔记

一、性能测试的概念 性能测试的概念 使用自动化工具,模拟不同的场景,对软件各项性能指标进行测试和评估的过程 性能测试的目的 评估当前系统能力,出现性能bug后,优化性能:预测未来的性能需求是否满足 例如&#xf…

【软考】8.2 编译程序基本原理/文法/正规式/有限自动机

《编译程序基本原理》 编译过程 词法分析: 针对单词;输入是字符;读的是字符流;语法分析: 针对语句;读的是记号流,即词法分析产生的一个个单词语义分析(针对语句含义) a.…

Golang interface 接口的应用场景 使用细节

应用场景介绍 对初学者讲,理解接口的概念不算太难,难的是不知道什么时候使用接口,下面我例举几个应用场景: 1.说现在美国要制造轰炸机,武装直升机,专家只需把飞机需要的功能/规格定下来即可,然…

Sql server 使用DBCC Shrinkfile 收缩日志文件

磁盘空间有限,需要收缩日志文件释放空间。 数据库名称上右击属性->文件,逻辑名称日志文件默认名称为“_log”结尾。 alter database 数据库 set recovery simple dbcc shrinkfile(XXX_log,2,truncateonly) alter database 数据库 set recovery full

【Vue2.0源码学习】生命周期篇-销毁阶段(destroy)

文章目录 1. 前言2. 销毁阶段分析3. 总结 1. 前言 接下来到了生命周期流程的最后一个阶段——销毁阶段。从官方文档给出的生命周期流程图中可以看到,当调用了vm.$destroy方法,Vue实例就进入了销毁阶段,该阶段所做的主要工作是将当前的Vue实例…

Vue 3 学习 源码解读

该文章内容为以下视频的学习笔记: 前言_哔哩哔哩_bilibili前言是秋招解决方案:深入 Vue3 源码,带你彻底打通 Vue3 源码面试的第1集视频,该合集共计13集,视频收藏或关注UP主,及时了解更多相关视频内容。htt…

微信小程序——CSS3渐变

SS3 渐变(gradients)可以在两个或多个指定的颜色之间显示平稳的过渡。CSS3 定义了两种类型的渐变(gradients): 说明 1、线性渐变(Linear Gradients)- 向下/向上/向左/向右/对角方向&#xff1…