VBA 定义一个简单的静态公共数组

Bri*_*fje 3 excel vba

我正在尝试完成这件显然很简单的事情,但不知何故 VBA 一直为我提供奇怪的错误。我想要一个名为样式的全局数组,其中包含以下字符串:设置、标题、注释和直接复制。在代码中:

Public styles(4) As String
Run Code Online (Sandbox Code Playgroud)

直接分配数组对我不起作用,所以我通过子来做到这一点:

sub Populate()
  styles(0) = "Settings"
  styles(1) = "Titles"
  styles(2) = "Comment"
  styles(3) = "Direct Copy"
  Debug.Print styles
End Sub
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用,因为它给出了编译错误:在 debug.print 行上键入不匹配...预期的结果类似于:(“设置”,“标题”,..)等,就像任何编程语言都会返回一样。

那么如何在 VBA Excel 中获取包含字符串的公共数组,以便我可以在同一模块中跨函数和子函数使用它们?

小智 7

试试这种形式的公共声明和数组元素赋值。

Option Explicit

Public styles As Variant

Sub printStyles()

    styles = Array("Settings", "Titles", "Comment", "Direct Copy")

    Debug.Print LBound(styles) & "to" & UBound(styles)

    Dim i As Long
    For i = LBound(styles) To UBound(styles)
        Debug.Print styles(i)
    Next i

    Debug.Print Join(styles, ", ")

End Sub
Run Code Online (Sandbox Code Playgroud)

顺便说一句,如果您继续使用保留字作为公共和私有变量的名称,您可能难以使用保留的样式对象