龙空技术网

开始 VBA 编程

ExcelTalk 1203

前言:

今天各位老铁们对“vbnet取字符串前5位”大概比较关注,小伙伴们都想要知道一些“vbnet取字符串前5位”的相关资讯。那么小编也在网摘上搜集了一些有关“vbnet取字符串前5位””的相关文章,希望大家能喜欢,兄弟们一起来了解一下吧!

Excel 是一个非常复杂的软件,经过几十年的发展,功能越来越多。

我们总是会遇到各种问题,就好像面对一个个被打乱的魔方,无从下手。

各种教程提到的眼花缭乱的操作,就好像魔方高手三下两下拨弄好,然后拷问我们:简单吧,这都不会?

但是教程无法解释的是:为什么要这样操作。无法真正理解原理,即使当时掌握了, 下次又会忘记。

是不是哪里出了问题?

我们需要的不是眼花缭乱的操作,而是基本原理和套路。就像解魔方一样,知道基本原理,经过思考,能推导出步骤,最终解决问题。

Excel 就有这样一本秘籍,学会之后能够以不变应万变,解决几乎遇到的所有问题,这本秘籍就是(VBA)编程。

下面我们就开始进入编程的世界。

计算机

在谈到编程之前,我们需要先了解计算机 ​ 体系。

计算机由硬件和软件构成,从智能手机到超级计算机大同小异。硬件由 CPU、内存、主板等构成,如果打开一台电脑主机可以看到类似下图的构造:

电脑主机构造

软件/程序大体可以分为操作系统与应用软件。Windows iOS Android 都是操作系统,应用软件基于操作系统运行,比如 Excel、QQ。

软件最终会被翻译成硬件能执行的指令,CPU 按照指令进行计算。

简而言之:软件是由开发者编写的指令,是开发者逻辑的体现,计算机只是遵从指令运行。

编写程序会用到不同的编程语言,常见的有 C 语言、Java、python、JavaScript 等,还有我们要学的 VB。

为什么会有这么多编程语言呢?

因为这些语言想要解决的问题不同,有的想要极致的性能、有的想要快速开发的效率。没有十全十美的编程语言,只有结合你所面临的问题和现状,挑选最合适的编程语言。

而解决 Excel 问题最合适的莫过于 VB。

乘法表

代码,或者源代码,是开发者用编程语言写下的文字,就好像一张建筑施工图。

有的代码需要编译打包,生成一个可以运行的文件,比如我们下载的某软件安装程序,运行这个文件相当于运行代码。

VB 代码不需要这些步骤就可以在 Excel 内运行,因为 Excel 会把 VB 代码翻译成计算机指令执行。

下面我们看一段打印乘法表的 VBA 代码:

Sub MultiTable()Dim i As IntegerDim j As IntegerDim sheet As WorksheetSet sheet = Worksheets.Item(1)For i = 1 To 9    For j = 1 To i    sheet.Cells(i, j) = i & "*" & j & "=" & (i * j)    Next jNext iEnd Sub

打开 Excel,按下 Alt + F11,或者鼠标右击工作表,选择“查看代码”,就可以打开 VBE。

输入上面的代码,点击工具栏的绿色箭头执行代码,再回到 Excel 可以看到执行结果。

运行代码

可以看到上面的 VBA 代码由以下元素组成:

英语单词和字母,只是很少量的单词数字英文符号,包括标点符号、数学计算符号

当前常见的编程语言都是类似的规则。

解析

我来一行一行的解释上面的代码:

Sub MultiTable()End Sub

第一行和最后一行定义了一个过程。过程是 VBA 的一个概念,可以理解为给中间这几段代码起了个名称。类似我们在 Excel 中选定一块区域,给区域命名。

Dim i As IntegerDim j As Integer

第二行和第三行定义了两个类型为整数的变量,分别叫做 i 和 j。变量 是所有编程语言都有的概念,也是最基础的概念。

变量可以理解为一个纸盒子,盒子里面可以存放数据。不同类型的变量就像不同形状的盒子,有方的、圆的,可以存放不同的数据。

往盒子里存放数据的过程,称为赋值。当用到变量的的时候,相当于从盒子里取出数据,称为取值

Dim sheet As WorksheetSet sheet = Worksheets.Item(1)

第四行和第五行定义了一个类型为 Worksheet 工作表的变量,并把这个变量赋值为 Excel 第一张工作表,也就是 Sheet1。

VB 和大多数编程语言类型,使用 = 符号表示赋值。就像在单元格里输入 =xxx 一样。

For i = 1 To 9' 内部代码 1Next i

第六行和倒数第二行的意思是:

把 i 赋值为 1,执行内部代码。

把 i 赋值为 2,执行内部代码。

直到把 i 赋值为 9,执行内部代码。

这个过程称为循环,所有的程序结构都可以分为顺序、分支、循环这三种,后面再详细讲。

所以内部代码一共执行了 9 次。

For j = 1 To i' 内部代码 2Next j

第七行和倒数第三行的意思是和上面变量 i 的循环类似,不过这次不是 1 到 9,而是 1 到 i。所以:

i 等于 1 时,j 的循环范围是 1 到 1,执行 1 次内部代码。

i 等于 2 时,j 的循环范围是 1 到 2,执行 2 次内部代码。

i 等于 9 时,j 的循环范围是 1 到 9,执行 9 次内部代码。

大家可以把 1 To i 改成 1 To 9,再查看运行结果。

sheet.Cells(i, j) = i & "*" & j & "=" & (i * j)

第八行的意思是:把 sheet 选中第 i 行第 j 列单元格的内容赋值为 i * j = 相乘结果

英文双引号括起来的部分称为字符串,或者称为文本。字符串可以包含中文,后面会详细讲。

VB 用 & 拼接字符串。

所以当 i 是 4,j 是 3 的时候,拼接结果就是 3*4=12

大家可以把 i & "*" 改成 i & "乘以" 试试。

上面的代码连起来就是:

当 i 是 1 时,j 从 1 到 1,第八行的代码执行一次:将第 1 行第 1 列单元格的内容设置为 1*1=1

当 i 是 2 时,j 从 1 到 2,第八行的代码执行两次:将第 2 行第 1 列单元格的内容设置为 2*1=2,将第 2 行第 2 列单元格的内容设置为 2*2=4

直到 i 是 9,第 9 行的 9 个单元格都会被设置相应的内容。

代码的诞生

再来思考一个问题,上面的代码是怎么来的?或者说编程工作是怎么开始的?

通常按照以下步骤:

梳理需求:解决什么问题?实现什么效果?意外情况怎么处理?思考,将需求转换为严谨的思路:程序由哪些模块组成,每个模块需要做什么?出了错误怎么处理?将思路转换为代码。调试代码、测试代码,确保没有 BUG,再交付。

梳理需求是至关重要的,通常需求由其他人:产品经理、领导,或者自己提出。如果你理解错了需求,那么后面的工作注定要失败的。

程序是开发者逻辑思路的体现,所以如果你的逻辑不清晰或者有漏洞,那么代码大概率是有 BUG 的。

切忌跳过前两步,直接开始写代码。前两步才是重中之重。

我对乘法表的需求是:

从 1 到 9 打印乘法表(而不是从 9 到 1)第一行打印 1*1,第二行打印 1*1 1*2 ...

由于需求比较简单,所以第二步的思考就是:一个模块,按照需求运行就可以。

前两步完成之后,编写代码就相对简单了,按照 VB 的语法规则写出代码。

在整个过程中,编程语言只是一种工具,即使换一种编程语言,也是同样的流程。

虽然编程语言只是工具,但是为了更好的完成工作,我们需要学习、了解这个工具。

总结

乘法表的代码是不难理解的,但是很多同学不理解 For Next 为什么要这么写。

因为 VB 是这么规定的,这称为编程语言的语法。编程语言一般使用几十个固定的英文单词,组成固定的语法,实现特定的逻辑,比如循环。

程序是给计算机执行的,所以编程语言需要固定而精确的表达,不像人类的语言那样随意和丰富,否则计算机是理解不了的。

后面的文章会详细讲解 VB 的基本语法,并结合示例实现更强大的功能。

最重要的是:一定要多思考,多练习。编程并不是魔法,而是像很多技能一样有着明确的学习路径。

无他,唯手熟尔。​

标签: #vbnet取字符串前5位 #乘法表vb代码