繁体   English   中英

VBA-公共阵列错误-下标超出范围

[英]VBA - Public Array Error - Subscript out of range

我想声明一个公共数组,创建它,然后在另一个子目录中使用它。 这是我写的例子:

Public array1() As String

Sub Create_Array()

Dim array1(1 To 4) As String

array1(1) = "1"
array1(2) = "2"
array1(3) = "A"
array1(4) = "B"

End Sub

Sub Show_Some_Index()

Dim a As String
a = array1(1)
MsgBox (a)

End Sub

我收到错误9:“下标超出范围”。 找不到答案,我在做什么错?

Sub Create_Array变量array1() Sub Create_Array该过程-基本上,这是一个只能在该过程中访问的局部变量,并且它的名称与在其他地方声明的另一个公共字段的名称相同,所以发生的是Show_Some_Index正在起作用一个尚未初始化的数组。

Dim用于声明变量。 如果要重新定义范围内的数组,请使用ReDim关键字。


更好的方法是使用返回数组的函数,而不是依赖于全局变量。

我想声明一个公共数组,创建它,然后在另一个子目录中使用它。

在这种情况下,请从代码中删除Dim语句。 根据Mat的解释,这是使代码正常工作的另一种方法

方式1

Public array1(1 To 4) As String

Sub Create_Array()
    array1(1) = "1"
    array1(2) = "2"
    array1(3) = "A"
    array1(4) = "B"

    Show_Some_Index
End Sub

Sub Show_Some_Index()
    Dim a As String
    a = array1(1)
    MsgBox (a)
End Sub

方式2

Public array1(1 To 4) As String

Sub Create_Array()
    array1(1) = "1"
    array1(2) = "2"
    array1(3) = "A"
    array1(4) = "B"
End Sub

Sub Show_Some_Index()
    Create_Array

    Dim a As String
    a = array1(1)
    MsgBox (a)
End Sub

初始化后,应该可以在其他过程中使用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM