VBA中的循环代码的使用

VBA中的循环代码的使用

最近,我在自学VBA,有了之前的Python基础,感觉学起VBA也比较轻松。毕竟VBA和Python一样都是面向对象的编程语言。通过自学,我基本上掌握了VBA的循环方法,以下是我的简单笔记和大家一起分享。

一、循环填充单元格

1.通过for循环和Cells()来填充A列1至10行单元格为1, 2, 3...10,代码如下:

Sub 填充单元格()Dim i As IntegerFor i = 1 To 10    Cells(i,1)= iNext iEnd Sub

2. 通过for循环和Range()来填充数字

Sub 填充单元格2()Dim i As IntegerFor i = 1 To 10 Range("A" i)= iNext iEnd Sub

3. 另类解法

通过定义Range对象,然后遍历对象中的元素,此种方法融合了上面二种方法。

Sub 填充单元格3()Dim col as integerSet col = Range("A1:A10")For Each cell In col cell.Value = cell.Row()Next cellEnd Sub

二、循环遍历工作表

1.通过Worksheets.count来获取工作表的总数来进行for循环。 以下代码实现用for循环来把每一个工作表的第一个单元格填充为工作表的表名。

Sub 循环工作表()Dim i As IntegerFor i = 1 To Worksheets.Count '用worksheets.count获取工作表的数量 Worksheets(i).Range("A1") = Worksheets(i).NameNext iEnd Sub

2. 利用for each ... in 来循环遍历工作表

这种方法的核心是定义工作表对象sht,然后对工作表集合对象进行遍历。

Sub 循环工作表2()Dim sht As WorksheetFor Each sht In Worksheets sht.Range("A1") = sht.NameNext shtEnd Sub

三、循环遍历工作簿

也就是遍历Excel文件,假定所有文件均已经打开。这里提供两种方法:第一种是对象法,代码如下:

Sub 循环工作簿()For Each wb In Workbooks For Each sht In wb.Worksheets sht.Range("A1") = wb.Name Next shtNext wbEnd Sub

第二种是切片法,实现的功能依然是在每个工作表的A1单元格中填充当前工作表的表名。

Sub 循环工作簿()Dim i, m As IntegerFor i = 1 To Workbooks.Count For m = 1 To Worksheets.Count Worksheets(m).Range("A1") = Worksheets(m).Nam Next mNext iEnd Sub

四、注意事项

for循环是成对的,一定要注意加上next X, 否则程序就会报错。

VBA的循环大概分二种,一种是对象法,一种是切片法,推荐用对象法,不用考虑对象的数量。

标识单元格可以用Range和Cells两种方法,各有优劣,可以有选择地使用。

与Python编程不同的是,VBA编程中要提前定义对象类型,因此它的代码执行速度会比Pythong更快。

VBA中的循环代码的使用