暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

固定数组值的传递

VBA语言専攻 2022-06-04
174

【分享成果,随喜正能量】最近很喜欢的一段话:路是自己选的,没有输赢,只有值不值得,任何经历过的事情,不是得到就是学到。

《VBA数组与字典方案》教程是我推出的第三套教程,目前已经是第一版修订了。这套教程定位于中级,字典是VBA的精华,我要求学员必学。七、一、三、九组合套教程掌握后,可以解决大多数工作中遇到的实际问题。

这套教程共两册,一共八十四讲,今后一段时间会给大家陆续推出修订后的教程内容。今日的内容是:固定数组值的传递


第三十四讲  如何把固定数组的值传递给另外一个数组

大家好,今日我们继续讲解VBA数组与字典解决方案,今日讲解的是第34讲:数组的传递。在应用数组的时候,我们往往需要要把数组的值由一个数组传递给另外一个数组,就如同变量的传递一样:

A=B   ’把B值赋给A

C=A    ’把A值赋给C

如上例,就完成了值的传递的过程,分别把B的值传递给了A;把A的值传递了C。

1  利用数组给数组赋值的思路分析

那么数组是否也可以利用一般变量赋值的方案呢?我们看下面的数组传递:

下面看我给出的代码:

Sub MyNZsz_34() '第34讲 如何把一个固定数组的值传递给另外一个数组

 '直接赋值是不对的

 Sheets("34").Select

 Dim arr1(1) As Integer  '定义一个一维固定数组arr1(1)

 Dim arr2(1) As Integer  '定义一个一维固定数组arr2(1)

  arr1(0) = 1  '给arr1(1) 的数组元素0赋值为1

  arr1(1) = 2  '给arr1(1) 的数组元素1赋值为2

  arr2 = arr1  '讲数组1传递给数组2

  MsgBox (arr2(1)) '提示数组2的元素1的值

End Sub

上述代码的过程要完成的是首先定义两个一维数组arr1(1)和 arr2(1);然后先给其中的一个数组arr1(1)赋值,这个数组共有两个元素,分别赋值为1,2;然后我们用普通变量赋值的方法把数组arr1()赋值给arr2();最后提示数组2的元素1的值,那么是否会弹出对话框提示为2呢?

我们看看代码的截图和代码的运行:

1  代码截图

2 运行截图:

这个时候会提示我们不能这样给数组赋值。由此我们可以看出:对于给定的两个静态数组不能相互赋值,否则将出现编译错误:不能给数组赋值。

2  利用数组给数组赋值的方案

那么要如何完成数组的值由一个数组传递给另外一个数组呢?常用的方法:

①将静态数组赋值给动态数组

②将静态数组赋值给一个变体变量

③利用循环的方法。

对于循环的方案比较简单,不再多说,这里着重讲解前两个方法。

对于动态数组我们在之前的讲解中已经讲了很多了,对于变量体大家要加强理解:数组可以用Variant 变体变量获取一组单元格的值,公式等,当不包括单元格地址。大家要理解Variant 变体变量的意义,当使用数组的这种赋值方法的时候一定要定义这个变量为Variant 变体变量。

对于上面给出的代码,我下面修正:

Sub MyNZsz_34_1() '第34讲 如何把一个固定数组的值传递给另外一个数组

 '直接赋值是不对的

 Sheets("34").Select

 Dim arr1(1) As Integer  '定义一个一维固定数组arr1(1)

 Dim arr3() As Integer

 Dim arr4 As Variant

  arr1(0) = 1  '给arr1(1) 的数组元素0赋值为1

  arr1(1) = 2  '给arr1(1) 的数组元素0赋值为2

  ReDim arr3(1)

  arr3 = arr1  '将数组1传递给数组3

  arr4 = arr1 

   MsgBox "动态数组赋值后:" & arr3(1) '提示数组3的元素1的值

   MsgBox "Variant赋值后:" & arr4(1) '提示数组4的元素1的值

End Sub

下面看代码的截图;

代码的运行:


今日内容回向:

1  数组的值如何传递?

2  如何理解变体变量?





我20多年的VBA实践经验,全部浓缩在下面的各个教程及各类工具中:



【分享成果,随喜正能量】人生看不惯的东西太多,看清、看懂,全是自找伤心。给生活罩上一层薄雾,不是自欺,而是对自我的保护。凡事太认真,苦了心,累了自己。

文章转载自VBA语言専攻,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论