我想声明一个公共数组,创建它然后在另一个sub中使用它。 这是我写的内容的简要说明:
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:"下标超出范围"。 无法找到答案,我做错了什么?
答案 0 :(得分:2)
array1()
中的变量Sub Create_Array
作用于该过程 - 基本上它是一个只能在该过程中访问的局部变量,并且它碰巧与其他地方声明的另一个公共字段具有相同的名称,因此发生的事情是Show_Some_Index
正在处理一个尚未初始化的数组。
Dim
用于声明变量。如果您要重新定义范围内的数组,请使用ReDim
关键字。
更好的方法是使用返回数组的函数,而不是依赖于全局变量。
答案 1 :(得分:2)
我想声明一个公共数组,创建它然后在另一个sub中使用它。
在这种情况下,从代码中删除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
初始化后,您应该可以在其他程序中使用它。