admin 管理员组

文章数量: 1184232


2024年4月21日发(作者:英文网站源码)

****************************************************************************************************

* VBA数组教程 *

* --------excel精英培训网:兰色幻想 *

****************************************************************************************************

从一个实例开始

Sub v4() '运行时间0.01秒

Dim t

t = Timer

For x = 1 To 100000

m = m + 1000 '真接调用内存中的值

Next x

MsgBox Timer - t

End Sub

Sub v5() '运行时间0.5秒

Dim t

t = Timer

For x = 1 To 100000

m = m + Cells(1, 1) '调用单元格中的值

Next x

MsgBox Timer - t

End Sub

运行的结果是直接调用内存中的值比调用单元格的值快了50倍,为什么会这样呢?我们需要了解一下

VBA的运算原理

********** VBA的运算原理 *********

VBA中的运算最终是在内存中进行的,如果数据已经在内存中,则直接进行运算,但如果数据是

储存在第三方对象(如单元格里,控件里)里,则还需要先把数据从第三方对象里调入到内存中,然后再

在内存中对数据进行运算。

如果把v5的程序进行稍微改动,运行时间会大大缩短。

Sub v5_2() '运行时间0.5秒

Dim x, t

t = Timer

x = Cells(1, 1) '把单元格的值先交给变量

For x = 1 To 100000

m = m + x

Next x

MsgBox Timer - t

End Sub

如果VBA多次调用同一样单元格,我们可以先把这个单元格放在一个变量中,如果是多行多列的单元

格区域呢?我们同样可以把把这个区域的值装入一个VBA变量。

Sub v6()

x = Range("a1:10000")

End Sub

这个VBA变量装入大于1个的数据时,就构成了VBA内存数组。

那什么是VBA数组呢?

1、什么是VBA数组呢?

VBA数组就是储存一组数据的数据空间。数据类型可以数字,可以是文本,可以是对象,也可以是

VBA数组。

2 VBA数组的分类

A.按维数划分

1维数组

Sub t1()

Dim arr(1 To 10)

For x = 1 To 10

arr(x) = x

Next x

Stop

End Sub

2维数组

Sub t2()

Dim arr(1 To 10, 1 To 2)

For x = 1 To 10

For y = 1 To 2

arr(x, y) = x * y

Next y

Next x

Stop

End Sub

3维数组

Sub t3()

Dim arr(1 To 10, 1 To 2, 1 To 3)

For x = 1 To 10

For y = 1 To 2

For z = 1 To 3

arr(x, y, z) = x * y + z

Next z

Next y

Next x


本文标签: 数据 内存 变量 进行 数组