二、Excel VBA 简单使用

news2024/12/28 3:23:04

在这里插入图片描述


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 Sub

Function 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").Select
    ActiveCell.FormulaR1C1 = "2"
    Range("A3").Select
    ActiveCell.FormulaR1C1 = "3"
    Range("A4").Select
    ActiveCell.FormulaR1C1 = "4"
    Range("A5").Select
    ActiveCell.FormulaR1C1 = "5"
    Range("A6").Select
    ActiveCell.FormulaR1C1 = "6"
    Range("A7").Select
    ActiveCell.FormulaR1C1 = "7"
    Range("A8").Select
    ActiveCell.FormulaR1C1 = "8"
    Range("A9").Select
    ActiveCell.FormulaR1C1 = "9"
    Range("A10").Select
    ActiveCell.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 10
  ActiveSheet.Cells(i, 1).Value = i
 Next i

End 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 range
 
 For Each cell In range
  If cell.Value Mod 2 = 1 Then
   SUMODDNUMBERS = SUMODDNUMBERS + cell.Value
  End If
 Next cell

End Function

要使用该函数,请在单元格中键入 =SUMODDNUMBERS() 并在参数中输入单元格范围。请参阅下面的屏幕截图:

在这里插入图片描述

⚾️6.2 示例#2:条件结构

以下示例演示如何使用 Select-Case 语句来使用决策结构。许多程序员喜欢 Select-Case 结构而不是 If-Then-Else,因为在检查多个条件时代码看起来更具可读性。

Sub ShowBudgetText()
    Dim Budget As Long
    Dim Result As String
    
    Budget = InputBox("Enter project budget: ")
    
    Select Case Budget
        Case 0 To 5000: Result = "LOW"
        Case 5001 To 10000: Result = "MEDIUM"
        Case Is > 10000: Result = "HIGH"
    End Select
    
    MsgBox "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 Long
    Dim Result As String
    
    On Error GoTo ErrorHandler
    
    Budget = InputBox("Enter project budget: ")
    
    Select Case Budget
        Case 0 To 5000: Result = "LOW"
        Case 5001 To 10000: Result = "MEDIUM"
        Case Is > 10000: Result = "HIGH"
    End Select
    
    MsgBox "You have a " & Result & " budget."
    
ErrorHandler:
    MsgBox "Please enter a valid input.", vbExclamation

End 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.coloradmin.cn/o/1067434.html

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

相关文章

学习笔记|ADC|NTC原理|测温程序|STC32G单片机视频开发教程(冲哥)|第十九集:ADC应用之NTC

文章目录 1.NTC的原理开发板上的NTC 2.NTC的测温程序编写3.实战小练总结课后练习 1.NTC的原理 NTC(Negative Temperature Coefficient)是指随温度上升电阻呈指数关系减小、具有负温度系数的热敏电阻现象和材料。该材料是利用锰、铜、硅、钴、铁、镍、锌…

经典算法-----01背包问题(动态规划)

目录 前言 01背包问题 问题描述 ​编辑 动态规划 基本概念 怎么理解动态规划? 解决01背包问题 代码实现 前言 今天我们学习一种新的算法---动态规划,这种算法思想是属于枚举的一种,下面我就通过01背包问题来说明这种算法的解决思路。 01背包问…

GEE17: 基于Theil-Sen Median斜率估计和Mann-Kendall趋势分析方法分析四川省2022年NDVI变化情况

Theil-Sen Median Mann-Kendall 1. Theil-Sen Median Mann-Kendall 原理1.1 Theil-Sen Median1.2 Mann-Kendall 2. GEE code 1. Theil-Sen Median Mann-Kendall 原理 1.1 Theil-Sen Median Theil-Sen Median方法又称为Sen斜率估计,是一种稳健的非参数统计的趋势…

LeakyReLU激活函数

nn.LeakyReLU 是PyTorch中的Leaky Rectified Linear Unit(ReLU)激活函数的实现。Leaky ReLU是一种修正线性单元,它在非负数部分保持线性,而在负数部分引入一个小的斜率(通常是一个小的正数),以防…

JVM(八股文)

目录 一、JVM简介 二、JVM中的内存区域划分 三、JVM加载 1.类加载 1.1 加载 1.2 验证 1.3 准备 1.4 解析 1.5 初始 1.6 总结 2.双亲委派模型 四、JVM 垃圾回收(GC) 1.确认垃圾 1.1 引用计数 1.2 可达性分析(Java 采用的方案&a…

BI系统有哪些?新手怎么选?

从本土化服务以及契合中国企业使用习惯等方面来看,建议采用国产BI系统。国内比较知名的BI工具有很多,比如亿信华辰BI(亿信ABI)、思迈特BI(Smartbi)、奥威BI(OurwayBISpeedBI)、帆软BI(FineBI)等。 这些BI系统在操作上都比较简单,比如像奥威B…

Vue中...(扩展运算符)的作用

对数组和对象而言,就是将运算符后面的变量里东西每一项拆下来。 (一)操作数组 // 1.把数组中的元素孤立起来 let iArray [1, 2, 3]; console.log(...iArray); // 打印结果 1 2 3// 2.在数组中添加元素 let iArray [1, 2, 3]; console.log…

拉取公司前端项目本地运行结果Bug频出,看我是如何一步一步成功解决的

文章目录 前端项目运行Bug记录问题背景npm install 报错问题1:npm install 报错ERESOLVE could not resolve问题2:npm install 报错 Cannot read properties of null问题3:node安装了npm没安装问题4:npm和node不兼容问题5&#xf…

新文件覆盖旧文件还能复原吗,3个方法快速恢复覆盖文件!

iPhone在解压压缩文件时,不小心将同名文件进行了覆盖,怎么撤回? 在使用U盘转移文档时,意外将同名文档进行了替换,怎么恢复? 当误将重名文件进行了替换,如何找回这些被覆盖的旧文件?…

Vue中的数据绑定

一、v-bind单向数据绑定 单向数据绑定中,数据只能由data流向页面。 v-bind:属性名"data变量" 或简写为 :属性名"data变量" 我们修改data中的iptvalue值,页面input框中的value值改变。 而我们修改input框中的value值&#xff0…

【C++初阶(二)C——C++过渡必看】

文章目录 前言一、C关键字🍎二、命名空间🍅1.命名空间的定义🍒2.命名空间使用🍓 三、C输入&输出🍑四、缺省参数🫑1. 缺省参数概念🍉2. 缺省参数分类🥝 五、函数重载&#x1f965…

【Vue面试题五】说说你对Vue生命周期的理解?

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 面试官:请描述下你对vue生命周期…

八、互联网技术——物联网

文章目录 一、智慧物联案例分析二、M2M技术三、数据保护综合案例分析一、智慧物联案例分析 智能物流是一种典型的物联网应用。一个物流仓储管理系统架构如下图所示: [问题1] 图中的三层功能:仓库物品识别、网络接入、物流管理中心,分别可对应到物联网基本架构中的哪一层? …

金九银十,刷完这个笔记,17K不能再少了....

大家好,最近有不少小伙伴在后台留言,得准备面试了,又不知道从何下手!为了帮大家节约时间,特意准备了一份面试相关的资料,内容非常的全面,真的可以好好补一补,希望大家在都能拿到理想…

MybatisPlus01

MybatisPlus01 1.MybatisPlus初体验 1.1首先要引入MybatisPlus的依赖 <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.2</version></dependency>1.2定义Mapp…

【论文极速读】EMT——评估多模态LLM中的灾难性遗忘问题

【论文极速读】EMT——评估多模态LLM中的灾难性遗忘问题 FesianXu 20231001 at Baidu Search Team 前言 论文[1]报告了多模态LLM中遇到的灾难性遗忘问题&#xff0c;并且提出了一种评估其程度的方法EMT&#xff0c;本文简要介绍&#xff0c;希望对读者有所帮助。如有谬误请见谅…

criu简单例子

CRIU&#xff08;Checkpoint/Restore In Userspace&#xff09;是运行在linux操作系统上的一个开源软件&#xff0c;其功能是在用户空间实现Checkpoint/Restore功能。 github地址如下&#xff1a;https://github.com/checkpoint-restore/criu 本人选取的版本是3.12&#xff0…

使用V-Ray for SketchUp 进行室外场景操作流程!

使用V-Ray for SketchUp 渲染时&#xff0c;可让大家轻松创建出色的渲染效果。如何使用V-Ray for SketchUp 进行室外场景操作呢&#xff1f; 对于一些新手朋友&#xff0c;可能是不知所措的&#xff0c;今天小编通过一个室外场景案例流程来给大家展示看看。 1、设置场景 可视化…

FPGA设计时序约束三、设置时钟组set_clock_groups

目录 一、背景 二、时钟间关系 2.1 时钟关系分类 2.2 时钟关系查看 三、异步时钟组 3.1 优先级 3.2 使用格式 3.3 asynchronous和exclusive 3.4 结果示例 四、参考资料 一、背景 Vivado中时序分析工具默认会分析设计中所有时钟相关的时序路径&#xff0c;除非时序约束…

Android子线程可以更新UI

目录 1 传统更新UI的七种方式1.1 new Handler()1.2 new Handler.Callback()1.3 new Handler().post(Runnable r)1.4 new Handler().postDelayed(Runnable r, long delayMillis)1.5 Activity.runOnUiThread(Runnable action)1.6 View.post(Runnable action)1.7 View.postDelayed…