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

标签 arrays excel vba

我正在尝试将存储在制表符分隔的文本文件中的公式加载到工作表的范围中。我用过函数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

结果输出:

output

我想知道是否有办法转换从 Split 返回的数组函数到变体类型数组,最好没有循环。我知道我可以在一个循环中单独设置每个单元格公式,但我试图让它尽可能高效和整洁。

我正在使用 Microsoft Excel for Mac 2011,版本 14.5.5。 VBA 把我逼疯了。

最佳答案

您可以使用 WorksheetFunction.Index (或 Application.Index )将 String 数组转换为 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

以下是数组类型:

locals

和预期的输出:

output

关于arrays - 如何将字符串类型数组转换为变体类型数组 - Excel VBA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37515352/

相关文章:

java - 静态数组如何存储在 Java 内存中?

javascript - 如何将类型数组猴子补丁到 ECMAScript 3 JavaScript 中,特别是 Uint8Array? (Adobe ESTK 中 IDE 必需品)

mysql - 检查excel vba中是否存在DSN

vba - inputBox Excel VBA 整数问题

excel - 如果在 Excel 中满足条件,如何在两个单元格之间绘制虚线

javascript - 寻找一种方法来比较和计算数组中所有嵌套对象键/值对

c++ - 当从函数传递时如何在 gdb 中查看数组内容

mysql - Excel导入数据报错1064,保留字符

excel - 在 2 个日期之间获取小时数

excel - VBA Excel 替换并不总是有效