1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > Excel VBA 讲座04 - 过程 变量 循环和IF语句

Excel VBA 讲座04 - 过程 变量 循环和IF语句

时间:2019-02-18 00:48:06

相关推荐

Excel VBA 讲座04 - 过程 变量 循环和IF语句

关于Procedure/过程

前面介绍了Module,是我们存放代码的单位,类似C语言的一个源文件。

而模块是由各种代码块构成的,有procedures和functions。

Procedures,有时也叫sub procedure,或者也可称为macro。

从代码层面,我们常使用procedure,而从excel的end user,即终端用户角度来看,可以看作Macro。

创一个模块,然后在里面创建一个procedure,可以叫做过程。这是一个beginning,开始我们的操作。

和创建模块的操作类似,激活模块的代码编辑窗口后,可以在菜单里选择insert a procedure,即插入一个过程。

第一步,the first step, give the procedure a name, 给你的过程起个名字,比如FunWithVBA。其他选项保持默认即可。

就创建了一个可运行的代码块,没有返回值,只是运行这里面我们编写的代码。

选项里的Scope是public,表示整个项目里都可以访问这个过程,项目就是整个Workbook,当前的Excel文件里的各个模块、各个sheet里的VBA代码都可以引用调用这个过程。

VBA里的procedures有三类,Sub、Function和Property。

关于VBA里的变量

前面介绍的都是VBA里的概念,下面说的是编程相关的概念,programming concepts。

第一个概念非常重要,就是variables,变量。

变量在任何语言中,都是非常基本的概念,并且也都是基本相同的概念。

在Excel VBA中,创建一个变量,start with dim keyword,这个是用来声明一个变量的保留字(the reserve key word to declare a variable)。

Public Sub MyPro()

dim userInput as string

userInput = "Georage"

activecell.Value = userInput

End Sub

使用变量的目的是什么?我们在编程中,需要从一些数据源中收集输入信息或数值,比如用户、别的Excel文件、自己的文档,或者要从其他数据源中导入数据。这些数据可能都有自己的形式或格式。要把这些其他数据源的数据,引入到我们的程序中,也就是这个过程里面。为了捕捉和存储这些数据,然后才能使用或留待备用,就要将这些数值存储在变量里。

比如上面代码,直接在程序编码时给变量赋值,也是一种用户输入的形式。

把编辑器窗口调整非全屏,并移动到屏幕右侧,准备运行程序。屏幕左边看到Excel的内容,右边可以一行行看VBA代码运行,这是了解VBA的好方式,也是debug VBA代码的好方法。

点击编辑器里,光标在此过程的代码中就OK。左边Excel点中一个单元格即可。

这时直接按下F8,就开始运行此过程,并进入调试模式。继续按下F8,就逐语句执行。可以光标移到变量上,看变量的值发生变化。运行完,Excel内的单元格内容就发生了变化。

也可以直接点击VBE上面工具栏的Play按键,来运行此过程。

下一个概念:循环 (Working Excel VBA Loops to repeat blocks of code)

每个编程语言里都会有这个关键(key)概念(concept):loops。

前面是一行行代码组成的代码块的执行,有时我们需要一些代码多次执行。

在VBA中有多种类型的循环,先介绍一种。

Public Sub FunWithVBA()

Do While ActiveCell.Value <> ""

ActiveCell.Font.Bold = True

ActiveCell.Offset(1, 0).Select

Loop

End Sub

上面代码演示的是do while循环,但这个do while和C语言的不一样,实际上是C语言里的while的loop功能。

这里判断当前单元格的值是否为空,如果不为空,就将字体设为粗体,并选定下一行同列的单元格。直到遇到空单元格,退出循环。

条件语句 - Building Logic with an IF Statement

前面讲了在过程中创建循环,下面介绍另一个概念,是VBA和其他编程语言中都有的逻辑控制语句。

上个例子整个一列有内容的都设置成了粗体,那如果我们有个判断条件,大于10的数字才设置成黑体呢?

Public Sub FunWithVBA()

Do While ActiveCell.Value <> ""

If ActiveCell.Value > 10 Then

ActiveCell.Font.Bold = True

ActiveCell.Interior.Color = RGB(0, 0, 255)

End If

ActiveCell.Offset(1, 0).Select

Loop

End Sub

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。