簡體   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