在Visual Basic编辑器中声明全局数组

时间:2015-10-05 15:20:04

标签: arrays vba

似乎没有其他答案对我有用,所以我不得不提出一个每个人都认为遇到麻烦的问题。任何其他语言的简单东西,但VBA。我只是想初始化一个全局字符串数组,并在我的主要子中使用它。

这是test1,我试图从公共函数返回它:

Public Function effthis1() As String()
    ReDim effthis1(0 To 10)
    myStr = "a b c d e f g h i j k"
    strsplit = Split(myStr)

    j = LBound(effthis)
    For Each word In strsplit
        effthis1(j) = word
        j = j + 1
    Next

End Function

Sub test1()
    testStr = effthis1(4)
    MsgBox testStr
End Sub

这是test2,我尝试使用在主子调用中调用的sub:

Public effthis2() As String

Sub declareMyArray()

effthis2(0) = "a"
effthis2(1) = "b"
effthis2(2) = "c"
effthis2(3) = "d"
effthis2(4) = "e"
effthis2(5) = "f"
effthis2(6) = "g"
effthis2(7) = "h"
effthis2(8) = "i"
effthis2(9) = "j"
effthis2(10) = "k"

End Sub

Sub test2()
    declareMyArray
    MsgBox effthis2(4)
End Sub

MSDN根本没有帮助。在此先感谢,乔治

2 个答案:

答案 0 :(得分:2)

使用你的第一个例子,你必须声明变量,然后不需要运行循环就可以获得该字符串。

     secondViewController.secondobject = secondobject;

编辑:

根据你的评论,那么teststr必须是一个加载整个数组的数组:

Public Function effthis1(j As Integer) As String
    Dim strsplit() As String
    myStr = "a b c d e f g h i j k"
    strsplit = Split(myStr)

    effthis1 = strsplit(j)

End Function

Sub test1()
    testStr = effthis1(4)
    MsgBox testStr
End Sub

答案 1 :(得分:1)

在第二个示例中,您必须在分配数组之前分配数组的大小,因此请将其更改为:

ReDim effthis2(10)

effthis2(0) = "a"
effthis2(1) = "b"
...

(公共数组也必须在模块中)