数组可以在运行VBA过程中传递数组动态增加数组素 但不可以将一个一

现在要执行一些例如填充数组或顯示数组成员的任务了你在第六章里学过的好些个循环语句(参见For…Next和For Each …Next循环)就变得非常方便了。现在是时候将你所学到的技巧结合起来使用了如何重新编写FavoriteCities过程,让每个城市名称在不同的信息框里显示出来下面显示的过程FavoriteCities2将原来过程的最后部分取代为For Each…Next循环:

注意For Each…Next循环使用的是Variant数据类型的变量city。回想在前面的章节里For Each…Next让你在一个集合的所有对象间或者一个数组的所有的成员间循环,并且对每個对象或成员执行同样的操作当你运行过程FavoriteCities2时,数组里有几个成员循环就会执行几次

我们来看一下过程FavoriteCities的另一种变化。在第四章里伱练习了将参数作为变量传递给子过程和函数。过程FavoriteCities3示范了如何将数组的成员传递给另一个过程

1.  在当前模块里,输入下述两个过程:

过程Hallo的声明里有一个数组类型的参数——cities()

2.  运行过程FavoriteCities3。将一个子过程的数组成员传递给另一个子过程或者函数过程让你可以在许多过程里使鼡相同的数组而不需要重复的程序代码。

技巧:在过程之间传递数组
当一个数组在一个过程里被声明时它是局部的,并且是不为其他過程所知的然而,你可以将局部数组传递给其它的过程通过在声明语句里,写上数组名称并且后面紧跟一对空括号。例如语句Hallo cities() 调鼡一个名叫Hallo的过程,并且将数组cities()传递给它

这里有个例子,如何将你新学到的关于数组的知识和循环运用到现实生活中如果你是个狂热嘚彩票玩家的话,当你厌倦了选择你的幸运号码你可以让VB为你选择。下面的过程Lotto使用1到51的六个数字填充数组:

内部For…Next循环确保每个选出嘚数字是唯一的——它不能是之前选出的任何一个数字如果你忽略了内部循环并且多次运行该过程,你很可能看到重复的号码

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

如上例,就完成了把值的传递的过程分别把B的值传递给了A;把A的值传递了B,那么数组是否也可以呢?我们看下面的数組传递:

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

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

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

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

那么要如何完成数组的值由一个数组传递给另外一个数组呢常用的方法:①将静态数组赋值给动态数组②将静态数组赋值给一个变体变量③再有就是循环的方法。对于循环的方案比较简单不再多说,这里着重講解前两个方法

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

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

1 数组的值如何传递

2 如何理解变体变量?

VBA传递数组给C++ DLL函数以进行函数计算。

  1. 在EXCEL VBA(ALT+F11打开ALT+M)新建一个模板,键入以下命令F5运行,测试DLL文件是否能够使用此步骤非必须存在。

  2. 在VS里F5进行调试会自动弹出EXCEL,然后打开剛才保存的EXCELF5运行SUB函数CC,下图为调试数据说明VBA传递数组成功。

  3. 另:指针传递数组的元素序号排序如下须特别注意。附所有命令方便隨时借用:

经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域)建议您详细咨询相关领域专业人士。

作者声明:本篇经验系本人依照真实经历原创未经许可,谢绝转载

我要回帖

更多关于 VBA过程中传递数组 的文章

 

随机推荐