热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

通过引用和修改内容的VBA传递数组

如何解决《通过引用和修改内容的VBA传递数组》经验,为你挑选了1个好方法。

VBA问题.我用它来制作Solidworks宏,但这并不重要.

有人可以解释语法将数组(类型为Double的1维,长度为3)传递给子例程或函数,以便我可以修改内容.我知道他们必须通过引用传递.我说的是确切的语法,因为我尝试的所有内容都会在子例程/函数调用中出现类型不匹配错误.

我正在寻找的是Doubles数组的正确Dim语句,初始化语句使所有数组值为零,然后是我需要的子程序调用语句和子程序头.如果我需要使用变量类型或动态数组,请具体说明,即使我已经知道数组的类型和大小.使用函数或子函数,我不关心哪个.

我的代码现在工作正常,但是当我使用数组时,我已经厌倦了避免函数和子程序调用.我在这里看过无数的文档和类似的问题,但我无法弄明白.非常感谢.



1> David Zemens..:

这是相当简单的,使用ByRef函数签名中的关键字将通过引用而不是值传递您的数组.这意味着,操作该阵列将被保留和气泡到主叫范围.这可能过于简单了,但是这样想一想:

ByRef:你传递一个参考的东西(数组,对象等)和任何转换的东西将是显而易见的任何地方,东西存在.

ByVal:你传递的东西的价值表示.基本上,你正在传递它的"副本".您可以操作此对象,但它与调用范围不是同一个对象,它只是一个副本.所以当封闭范围结束时,你仍然只留下原始的东西.

将数组初始化为数字类型,这将为您提供默认0值.

示例如下:

Option Explicit
Sub foo()
    Dim myArray(1 To 3) As Double  'The array is initialized with zero-values 

    Call bar(myArray)

    MsgBox myArray(3)

End Sub

Sub bar(ByRef dblArray() As Double)

    dblArray(1) = 123
    dblArray(2) = 345
    dblArray(3) = 33456

End Sub


推荐阅读
author-avatar
长大的夜夜
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有