服务粉丝

我们一直在努力
当前位置:首页 > 财经 >

第一章 开始学Excel VBA

日期: 来源:编辑之谭收集编辑:谭编

导读:谭编准备撰写一本新书《Excel VBA数据处理与绘图》,希望对科研人员有帮助。


第一章  开始学Excel VBA


VBA即Visual Basic for Applications的缩写。它是古老的Visual Basic编程的自定义版本。自20世纪90年代中期以来,Microsoft Excel的宏就一直使用这种语言。Microsoft Excel集成了VBA的宏编程语言环境。这种编程语言至少可以为您实现3种用途:

1.使用宏从代码自动驱动Excel;

2.创建新的自定义工作表函数;

3.将Excel与其他应用程序交互。

作为科研人员,经常需要对科研数据进行科学运算,可以利用Excel VBA的强度编程环境,设计界面,编写代码,按特定的科学模型和科学算法操控Excel实现运算过程、显示运算结果图像。此外,利用VBA编程还可操控Microsoft Word、PowerPoint、Internet Explorer、记事本等程序。



1.1 第一个程序Hello world

1.1.1打开Excel的VBA

第一步:打开Excel的工作簿
第二步:开启Excel的开发工具菜单
在Excel软件选择菜单“文件→选项→自定义功能区”,选择“开发工具”复选框,确定。
Excel的菜单“开发工具”标签中,点击“查看代码”或“Visual Basic”即可打开Visual Basice Editor (VBE编辑器),也可以按Alt+F11打开VBE。

1.1.2 窗口的设计

在编写代码前,我们插入一个简单的窗体,在窗体中绘制一个按钮。在VBE窗口,选择菜单“插入→用户窗体”,选择工具箱的按钮工具,在新建的窗体中画出一个按钮。


1.1.3 代码的编写

在对窗体以及其中的按钮、文本框等对象编程时,可以双击该对象打开代码窗口进行编程。例如双击按钮后,在打开的代码窗口中,光标移到第一行输入“OptionExplicit”进行强制约定。

在编程中将某些具体功能编写成函数(Function)或子模块(Sub),利用按钮或其他对象的点击等事件调用这些函数,基于这种思想,可以使程序模块化,方便后续维护。例如给按钮的Click事件添加调用Example子模块,双击按钮,在其模块中添加一行代码“Call Example”,即可实现对Example()的调用。

接下来定义这个Example()子模块,在代码窗口中任意行编写代码如下:

Option Explicit
Sub Example()
Dim a As Integer
a = 2
Debug.Print a
Dim b As Long
b = a + 2
Debug.Print b
Dim c As String
c = "Hello, world!"
Debug.Print c
End Sub

对Example()子模块中的代码解释如下:
(1)代码缩进

为了提高代码的可读性,通常选将模块中的代码按其逻辑关系进行不同级别的缩进。

(2)变量申明

Dim 用于申明变量及类型,可以将多个变量的申明写在一行代码中,用英文逗号分隔。常用的数据类型:布尔型Boolean(True或False)、字符型String、整数型Integer、长整型Long、单精度Single、双精度Double等。

(3)变量赋值

变量的赋值方式非常简单,例如“a=2”。

(4)变量运算

变量的运算也简单,符合一般的运算规则。运算符除了常见的“+-*/”以外,还有乘方“^”、开方“Sqrt(x)”、Log(x)等。这些在科学研究中经常会用到,我将在后续案例中详述。

(5)调试监控

Debug语句是用于监控计算过程中的某种取值或某种状态,它反馈的结果不会显示在用户界面上,仅用于程序员的调试过程,该语句并非必要。

(6)反馈弹窗

MsgBox是弹窗功能,用于将某些反馈提示给用户,并等待用户的反馈(例如需要等待用户输入或单击“确定”、“取消”按钮)。

值得注意的是,代码中的Dubug语句执行的结果出现在“立即窗口”,在初次使用VBE编辑器时,该窗口并没出现在编辑器界面。可通过选择菜单“视图→立即窗口”(或按Ctrl+G)显示“立即窗口”。


1.1.4 程序的运行

首先单击窗口编辑器,然后单击播放按钮(或按F5)运行设计的程序。当然,在首次创建并未保存的情况下,会弹出对话框提示我们保存程序,命名为“helloWorld.xlsm”格式,注意要选择“Excel启用宏的工作簿”这个类型。当一个简单的窗体出现时,表明HelloWord程序成功运行了。单击按钮,在“立即窗口”即可出现Dubug语句的输出结果,同时会弹出窗口显示“Hello, world!”。当您看得眼前的这一切时,恭喜你,你的一只脚已踏入Excel VBA编程的大门。


1.1.5 变量申明

在VBA中声明变量时,一般使用Dim语句,后跟变量名称和类型。如果变量需要在未声明的情况下使用,或者如果未指定类型,则将其分配为Variant类型。在模块的第一行使用OptionExplicit语句,强制在使用之前声明所有变量。强烈建议始终使用Option Explicit,因为它有助于防止拼写错误,并确保变量/对象保持其预期的类型。

在前面的案例中,使用Dim a as Integer的格式定义变量的类型。除了这种可读性很强的申明方式外,还有更简单的申明语句:

Dim this$ 'String

Dim this% 'Integer

Dim this& 'Long

Dim this! 'Single

Dim this# 'Double

Dim this@ 'Currency

以上申明语句采用后缀类型符号“$、%、&、!、#、@”分别代表字符串、整数型、长整型、单精度、双精度、货币等类型。虽然这种语法简单,但对于初学者不容易记忆且易混淆,建议对编程有一定基础的情况下使用。

在上述代码中,每一行末尾都有注释语句,用于解释代码或备注重要信息,方便程序员后期调试。在VBA中,可以在代码末尾或上、下空行添加注释,注释语句以单引号“'”开头。

在复杂的科学运算中,除了需要申明不同类型的变量外,还需考虑这些变量的使用范围(例如局部变量、全局变量)和变化与否(静态变量、动态变量)。

(1)静态变量

当使用Static语句而不是Dim语句时,声明的变量将保留调用时的值。代码如下:

Static x as Integer
(2)全局变量

全局变量可以用于项目中的任何过程。如果在模块外声明了全局变量,模块或类模块都可以使用这些全局变量。代码如下:

Public CounterVariable as Integer
(3)局部变量
局部变量只能由同一模块中的过程使用。代码如下:
Private CounterVariable as Integer

来源和更多信息:
(1)MSDN-Declaring Variables
https://learn.microsoft.com/zh-cn/office/vba/Language/Concepts/Getting-Started/declaring-variables
(2)Type Characters (Visual Basic)
https://learn.microsoft.com/en-us/dotnet/visual-basic/programming-guide/language-features/data-types/type-characters
       

相关阅读

  • 一个用于创建超漂亮代码图像的工具 - showcode

  • showcode.app 是一个用于创建漂亮代码图像的工具。该工具功能非常强大,可以导入导出我们自己的配置,整个应用分为代码区域和图像编辑区域。在代码区域可以选择大量支持的编程
  • 学会 IDEA 这 30 个神技,撸码效率直接起飞

  • 点击“终码一生”,关注,置顶公众号每日技术干货,第一时间送达!耗时8个月联合打造 《 2023年Java高薪课程 》,已更新了 102G 视频,累计更新时长 500+ 个小时,需要的小伙伴可以了解下
  • 因为一件小事被公司开除了

  • 点蓝字关注,一起程序员弯道超车之路有一位创业者朋友,他是公司负责人,带领着一个十几人的小团队,目前正在开发一款 SaaS 产品。这位朋友自己也是码农,而且在大厂工作了好几年,所以
  • 阿里开源的低代码引擎 LowCodeEngine

  • 点蓝字关注,一起程序员弯道超车之路LowCodeEngine是由阿里巴巴钉钉团队开源的低代码引擎, 该引擎全面遵循《阿里巴巴中后端前端基础构建协议规范》和《阿里巴巴中后端前端素材
  • Kotlin协程开发的基础入门知识

  • / 今日科技快讯 /近日,爱奇艺官方账号发文,针对近期爱奇艺VIP会员用户反馈的投屏清晰度、设备登录等问题做出如下调整:1.为2023年2月20日仍处于订阅状态的爱奇艺黄金 VIP
  • Android自定义通知方方面面全适配

  • / 今日科技快讯 /近日,社交媒体推特老板埃隆·马斯克在回复用户推文时表示,推特将于下周开源算法。在此之前,马斯克一直说要将推特算法开源。周二一名推特用户表示,如果“现
  • 推倒重来,如何快速从 0 到 1 重构一个 APP 项目?

  • 说到「重构」这个话题,或许有些朋友遇到过这样的经历,公司早年间上线的项目系统,因一直没专人在演进过程中为代码质量负责,导致现在代码越来越混乱,逐渐堆积成“屎山”,目前的维护
  • 分享两种方式:如何开启JNI的“大门”?

  • ‍‍1要介绍本篇博客的原因前段时间学习OpenGL ES相关技术,下载了一个Github项目学习,项目地址在:https://github.com/githubhaohao/NDK_OpenGLES_3_0项目的关键代码都是C++实
  • 免费开源Windows系统错误代码查询工具!

  • “设为星标”第一时间获取各类实用干货!前言大家在使用Windows系统过程中,或多或少都遇到过一些错误,有些错误系统会给出解释,有些错误则只给出对应的错误代码,而这些错误代码代

热门文章

  • “复活”半年后 京东拍拍二手杀入公益事业

  • 京东拍拍二手“复活”半年后,杀入公益事业,试图让企业捐的赠品、家庭闲置品变成实实在在的“爱心”。 把“闲置品”变爱心 6月12日,“益心一益·守护梦想每一步”2018年四

最新文章

  • 第一章 开始学Excel VBA

  • 导读:谭编准备撰写一本新书《Excel VBA数据处理与绘图》,希望对科研人员有帮助。第一章 开始学Excel VBAVBA即Visual Basic for Applications的缩写。它是古老的Visual Basic