微软Visual Basic:如何初始化数组变量?

3
我写了一个宏,对文档中特定一组Word样式的每个实例执行某些操作。
为此,我创建了一个名称数组,方法如下:
Dim mylist(4) As String
mylist(1) = "Heading 1" 
mylist(2) = "Heading 2" 
mylist(3) = "Heading 3" 
mylist(4) = "Caption"

我无法在Office帮助或microsoft.com网站上找到任何提到更简短的方法的帮助页面。是否有语法可以让我简化这个过程,类似于以下伪代码:

mylist(1:4) = ["Heading 1", "Heading 2", "Heading 3", "Caption"]

我正在寻找一种通用的解决方案,可以一行代码加载数组,无论是字符串还是数字,在我不想要像文档中的所有样式这样的整个集合时使用。
编辑:我遇到了Visual Basic 2008中的集合初始化语法?,它表明答案是“直到VB10为止”。欢迎更新该结论。

我们都暗自希望 VB 更像 FORTRAN - John Alexiou
2个回答

6

这与“Dim mylist(4) As String”相似但有些不同。

Dim myarray As Variant
myarray = Array("Cat", "Dog", "Rabbit")

来源:http://www.mrexcel.com/forum/excel-questions/18225-initializing-arrays-single-statement.html

这篇文章介绍了在单个语句中初始化数组的方法。通过使用花括号将值包围在一起,可以快速有效地创建数组。此外,还提供了一些示例代码来演示如何使用此方法来初始化不同类型的数组。

这样会使用更多的内存。如果你只想用它来处理字符串,那就继续使用String类型吧。 - makciook
我没有任何大型列表,所以内存不是问题。只要它能在“Word”和“Excel”中工作,那我就没问题。我会反馈结果的。 - Carl Witthoft
那个链接还建议使用 Dim mylist() As String mylist = Split("Heading 1,Heading 2,Caption", ",")。这两种选项都可以正常工作,除了我必须记住这些数组的索引从零开始,而不是从一开始。谢谢! - Carl Witthoft
1
Split("忽略我,标题1,标题2..."),你可以假装这个数组是基于1的。;-) - Steve Rindsberg

1
如果内存不是问题(因此数据类型可以是变量),则会生成一个基于1的数组。
Dim mylist As Variant
    mylist = [{"Heading 1", "Heading 2", "Heading 3", "Caption"}]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接