Excel怎么循环运行这个代码?

如有条件的话,可以遵循以下的步骤学习:

1) 理解基本的语法,上机练习简单的操作

2) 反复阅读理解有经验人士的代码

3) 对于一些简单的需求,可以试着自己解决

4) 对于VBA而言,同一个目标可以有很多实现方法。故同样的需求,可比较别人的实现方法和自己的实现方法,并加以比较评判

5) 随着学习的深入,评判、重写自己的代码

IDE)。换句话说不仅在Excel里,Word、PowerPoint也可以用VBA。VBA的运行环境称之为宿主(Host)。比如,你在Excel里面使用了VBA,那么Excel就是宿主。这个概念也适用于VBScript,对应的宿主可以认为是Windows本身(实际上是Windows的一个组件:Windows脚本宿主WSH)。

那么从VBA的历史上我们可以看到,它实际上是由两部分组成的:一个是语言本身的特性,另外一个是宿主提供的功能。语言本身具有通用性,而宿主相关的部分和不同的宿主有关。这篇文章也会对应的分为两个部分,即通用的VBScript和Excel VBA。

学习VBScript,你只需要Windows系统本身。我们使用的工具是系统自带的命令提示符、记事本和Windows脚本宿主。

首先我们建一个工作目录。以下两种操作均可:

1.新建一个文件夹,按住Shift然后鼠标右击,选择“在命令提示符中打开”

2.按Windows +R,输入cmd,回车。例如想建立的工作目录为 C:\Work,那么就输入

以下假设我们的工作目录是C:\Work。

接下来可以写程序了。在命令提示符下输入

当记事本提示你创建新文件时,选择“是”

比如我们写一个从1加到100的程序。在记事本里输入

命令提示符会输出一些版本信息,然后会出现结果5050。如果嫌版本信息太罗嗦,就加一个/nologo的选项:

因为Windows对扩展名为.vbs的文件进行了绑定,所以也可以直接运行

输出的形式略有不同,稍后解释。

变量:与数学上的变量意义相同。变量用来存储数据。变量不得使用数字作为开头,原则上不要使用中文作为变量的名字。应使用字母和数字、下划线,例如sum、my_result_0等都可以。

字面量:在代码中可见的数据,例如整数、小数和双引号包裹、可由任意字符组成的字符串。如100、"Hello"、"标题"等。

运算:与数学上的运算意义相同。

关键字:VBScript自带的命令符号,不得用于变量名称。VBScript不区分大小写。通常第一个字母大写。

注释:单引号'直到行尾的所有内容,VBScript均予以忽略。

声明一个变量使用Dim关键字。尽管变量在第一次赋值的时候会自动声明,但努力养成明确声明变量的好习惯。

用操作符=给变量赋值。=右侧的表达式将被求值,然后赋予=左侧的变量

可以把字面量、运算的结果或者函数返回的值赋给变量。=赋值只适用于整数、字符串等简单类型的赋值。

函数与数学上的多元函数意义相同。函数需要零个或多个参数返回一个运算的结果。上面的代码在调用一个函数InputBox,并赋予其2个字符串参数,以逗号隔开。当不需要返回值时,括号可以省略。

InputBox是VBScript的内建函数,而这段代码最后的WScript.echo看起来也是个函数。即WScript.echo(my_result)的简写。这个“函数”并不是VBScript提供的,而是Windows脚本宿主的功能。不得不在这里介绍是因为需要有一个输出数据的方法,而输出数据的方法VBScript本身并没有提供。事实上Windows脚本宿主对WScript.echo的解释也有不同,当用cscript

前面提到的代码都是逐条执行的。而条件分支的含义是根据数据的不同而选择性的执行不同的代码。举例

关键字 If-Then-Else-End If形成了两个分支,习惯上分支内部的代码最好给予一些空格缩进。If后面的语句是所谓条件表达式。整个表达式会被求值,若为Ture,则运行Then之后的语句后跳至End If,否则跳过Then后面的语句,直接从Else开始直到End If。如果没有Else分支,则直接跳至End If。故Else分支是可选的,当然可以有多个分支:

实际上相当于嵌套的分支:

除了分支之外,某一段代码还可以反复执行。最简单的情况,例如打印5个"Hello"

关键字 for-to-next创建了一个循环。循环变量i依次赋值为1、2、3、4、5,每次赋值后,for-next之间的代码都会完整执行一次。

以上只是谈到了VBScript最最基本的用法,能够覆盖大概60%的常用情景。但完整使用VBScript需要掌握80%的功能。

答主极为推荐的Tutorial是下面这个:

如果遇到了非常疑难的问题,应该参考最权威的官方文档(MSDN):

3. 学习Excel VBA对于想要学习Excel VBA的非程序员朋友,可能遇到的最大的一个门槛就是“面向对象编程”的概念。但对于掌握VBA,对“面向对象编程”先能够理解到以下程度就基本OK了:

我家有一只宠物猫。这里,宠物是一个类(class),我家的猫是这个类的一个对象(object)。猫是白色的,白色就是这个对象的一个属性(property)。我家猫去做绝育就是设置(property set)该对象的另外一个属性。猫吃罐头是在执行该对象的一个方法(method)。

可以认为,Excel以类库(Class Library)的方式扩展了VBScript。在面向对象编程中,对于一个类库有两种使用的方式:1是对类进行继承(例如,类“猫科动物”就是对类“哺乳动物”的继承);2是对类进行例化而形成特定的对象(例如,养一只猫)。对于Excel来说,绝大多数时候在使用第2种方式,即关心如何产生和使用对象。

对于某种功能,Excel将其设置为属性还是设置为方法是有讲究的,通常来说,对象自身的特性(标题、尺寸)等会被设置为属性,而涉及对象与其他对象交互的功能会被设置为方法。并不是所有的面向对象系统都如此。

本部分我们将设定一个简单的需求:在工作表中创建一个10x10的矩阵,每个元素都是1~100之间的一个随机整数。

有两种方式可使用Excel VBA,一个是使用Windows VBS引入Excel对象,一个是在Excel内部编程。前一种的好处是,因为程序在Excel外部,故可以连续处理多个Excel文件。后一种的好处是有一个集成开发环境(Excel VBE)可以使用,便于调试,缺点是代码分散,且Excel必须启用宏。

第一种方法,仍然使用本文第二部分的环境,用记事本新建一个文件,录入以下代码:

注意到这里使用了Set关键字而不是直接赋值,这其中的原因是=只适用于简单数值的赋值,但函数WScript.CreateObject("Excel.Application")的返回值是一个对象句柄。凡对象句柄之间的赋值都要用Set。

接下来设置这个app对象的属性Visible为True,意为把Excel程序显示出来。如果批量处理很多文件,则不用设置这个属性,程序将在后台运行,不会跳出很多Excel来。

我们知道启动Excel时会自动新建一个工作簿(WorkBook),但编程创建的App对象不会自动创建工作簿。Excel中,已经打开的工作簿构成了一个工作簿集合。在VBA里面多个同类的对象通常被归拢到一个集合(collection)当中,而集合本身也是一个对象。在Excel VBA中有各种各样的集合,工作簿集合、工作表集合、图形集合等。对于集合对象有一些统一的方法,例如Add方法的含义是,在该集合中添加一个对象,并返回它。那么Set workbook = app.WorkBooks.Add这句话执行后,Excel就创建了一个新的WorkBook,程序获得了一个workbook对象。

每一个workbook对象在创立后,它的WorkSheets集合会自动添加3个工作表(如同Excel新建工作簿一样)可以通过调用worksheets方法来得到某个工作表。(注:Excel 2013以及后续,workbook对象在创立后只会自动添加一个工作表)

对于第一个工作表,我们设置了两重循环为10x10的矩阵设置随机值。CInt()、Int()和Rnd()函数是VBScript内建函数,具体用法可查阅MSDN。对于第二个工作表,我们利用Excel自带的公式得到随机值。这就是所谓“达成同样的目标有不同的方法”。

以上我们的代码都在Excel外部运行。Excel内部有VBA的集成开发环境,仍然以随机数为例:

在Excel中按Alt+F11组合键呼出集成开发环境。左侧的工程管理窗口会列出所有打开的工作簿,每一个工作簿对应一个VBAProject。每个VBAProject下除了列出所有的工作表独有的代码之外,还有一个ThisWorkbook的项目文件,代表这个工作薄范围内的代码。除此之外,VBAProject还可能有窗体、用户自己开发的类等等。

Excel 2016 Visual Basic 编辑器(微软:对你们苹果用户做到这份儿已经够意思了,要啥自行车啊)。

我们将代码放进ThisWorkbook中。这个代码被一个Sub子过程包裹,名字是我们自己起的。这段代码和刚才的代码稍有不同,首先,对于一个句柄变量,声明时最好指定它的类型,其次,由于代码已经位于Workbook内部,故无需创建Excel进程、也无需创建workbook对象。Worksheets成为“内建函数”。而CInt等VBScript内建函数此处仍可以使用。

按F5,由于整个代码块只有一个子过程,该唯一子过程会立即执行。如果关闭了VBA集成开发环境,则可以在Excel菜单中执行“运行宏”来执行这段代码。

最后,由于Excel的安全策略,含有代码的文件需要保存为.xlsm格式。

相当于一本“词典”,经常翻阅非常有好处。

经常使用Excel的人士普遍对Excel公式掌握的出神入化,但Excel VBA却遵循着不一样的思维方式——它更接近于Excel软件自身的运行规律,而不是数据层面的特点。

VBScript和Excel VBA的系统性非常强,一本系统性强、例子丰富的书籍必不可少,MSDN乃居家必备。

当然搜索引擎也是一个好助手,把你的问题用英文表述直接Google,通常会获取丰富的答案。不能访问Google也很难科学上网的朋友可以试试

,aol的搜索后端是Google提供的。

众所周知,百度的中文技术资源质量一向低下(

无论任何时刻都不要使用百度

无论任何时刻都不要使用百度无论任何时刻都不要使用百度

无论任何时刻都不要使用百度无论任何时刻都不要使用百度
(特别重要的事情说5遍)

我要回帖

更多关于 怎样找到表格中的循环利用 的文章

 

随机推荐