如何将字符串类型数组转换为变量类型数组-Excel VBA

Geo*_*ids 5 arrays string variant excel-vba cells

我试图将以制表符分隔的文本文件中存储的公式加载到工作表中的某个范围。我已经使用该函数Split(Expression As String, Delimiter)正确地将每一行依次加载到一维数组中,但是遇到了有关返回的数组类型的问题。

Split函数仅返回字符串类型的数组,而我需要一个变量类型数组来将范围设置为。这是因为使用字符串类型数组设置单元格的公式会导致将单元格值设置为原始文本,即使字符串以等号开头。

'Example code to demonstrate the problem:
Sub Tester()
    Dim StringArr(1 To 3) As String
    StringArr(1) = "= 1"
    StringArr(2) = "= 2"
    StringArr(3) = "= 3"
    Range("Sheet1!$A$1:$C$1").Formula = StringArr
    'Cells display raw string until edited manually

    Dim VariantArr(1 To 3) As Variant
    VariantArr(1) = "= 1"
    VariantArr(2) = "= 2"
    VariantArr(3) = "= 3"
    Range("Sheet1!$A$2:$C$2").Formula = VariantArr
    'Cells display formula result correctly
End Sub
Run Code Online (Sandbox Code Playgroud)

结果输出:

输出

我想知道是否有一种方法可以将Split函数返回的数组转换为变量类型数组,最好没有循环。我知道我可以在一个循环中分别设置每个单元格公式,但是我试图使其尽可能高效和整洁。

我正在使用Microsoft Excel for Mac 2011 14.5.5版。VBA使我无所适从。

ome*_*pes 6

您可以使用WorksheetFunction.Index(或) 将StringApplication.Index数组转换为Variant/String数组:

Sub Test()

    StringArr = Split("=1 =2 =3")
    VariantArr = WorksheetFunction.Index(StringArr, 1, 0)
    Range("Sheet1!$A$1:$C$1").Formula = StringArr
    Range("Sheet1!$A$2:$C$2").Formula = VariantArr

End Sub
Run Code Online (Sandbox Code Playgroud)

以下是数组类型:

当地人

和预期输出:

输出