excel - 有没有办法根据条件初始化公共(public)数组?

标签 excel vba multidimensional-array

我有一个 3 维数组。我想从 Excel VBA 中的多个模块访问该数组。因此,我使用 Public 来声明它。目前我使用这段代码:

Public MyData(1 To 400, 1 To 10, 1 To 3000) As Double 

我想在代码启动时根据数据大小将第一个和第三个变量初始化为某个值。

由于 ReDim 只能用于数组中的最后一个变量,因此我正在尝试执行类似的操作,尽管这是不可能的:

If x < 400 and z < 3000 Then    
    Public MyData(1 To 400, 1 To 10, 1 To 3000) As Double 
End If

If x < 200 and z < 1000 Then    
    Public MyData(1 To 200, 1 To 10, 1 To 1000) As Double 
End If

有没有办法根据条件(x 和 z 的值低于某个级别)来初始化数组?

谢谢!

最佳答案

  1. ReDim 可以对任何尺寸进行。 ReDim Preserve 仅限于修改最后一个维度,保留现有的加载项目值。但对于 ReDim Preserve 来说,也存在一种解决方法:将最后一个维度设置为要重新保存的维度,最后转置数组;

  2. ReDim 只能对已声明的数组执行,但在声明期间无需设置尺寸。因此,以下面的方式声明它:

Public MyData() As Double

将根据您的需要工作...

  • Public 变量只能放置在模块顶部的声明区域中。因此,那里不允许任何此类代码。您只能像您尝试的那样在 Sub/Function 模块中 ReDim 它,前提是您按照我上面建议的方式声明它
  • 关于excel - 有没有办法根据条件初始化公共(public)数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63547524/

    相关文章:

    arrays - 简单的 VBA 数组连接不起作用

    excel - 优化 Excel VBA 代码

    excel - 用于从 Internet Explorer 转换为 Edge 或 chrome 浏览器的 VBA 脚本

    ms-access - 选择带有单选按钮的案例 - 遇到空值问题

    excel - 如何在excel中使用动态vba单元格复制所有表格信息

    c# - 将 Linq 与二维数组一起使用,找不到选择

    python - 在 numpy 的 4 维矩阵中插入非对齐元素

    arrays - 如何在 scala 中的二维数组上使用 contains 方法

    VBA 事件仅引发一次(间歇性)

    vba - 使用宏将数据从一列添加到 Excel 中的现有列