gpt4 book ai didi

arrays - 将完整的拆分数组放入 VBA 变量中

转载 作者:行者123 更新时间:2023-12-03 01:00:53 24 4
gpt4 key购买 nike

假设我在 Range("A1") 中有一条路径,如下所示:

/data/apps/server/

我想将这三个元素放入一个变量中。我想通过分隔符 / 执行 Split() 我会得到完整的数组:

Dim myElements()
myElements = Split(Range("A1").Value,"/")
'>>> EXPECTED: myElements is [data, apps, servers]

但实际上我在 myElements = Split(Range("A1").Value,"/") 行上收到了类型不匹配错误。 Split 函数返回什么?它实际上返回数组还是提供只读访问权限?

我只想获取 Split 方法的数组,而不必循环它们并构建我自己的数组(当然,如果可能的话)。

最佳答案

Dim elements() 更改为 Dim elements As Variant

您需要将其声明为变体。

说明:

Excel 单元格中的数据可以是任何内容。因此,请使用变体。在下面的情况下,您知道它是一个 String,因此将其声明为 String

Sub Sample()
Dim myElements() As String
Dim myString As String

myString = "aaa/bbb/ccc"

myElements = Split(myString, "/")

Debug.Print myElements(0)
Debug.Print myElements(1)
Debug.Print myElements(2)
End Sub

Split 返回一个字符串数组。您可能想查看This

编辑:我有一种感觉,我的解释可能会让别人感到困惑,所以让我再解释一下。

Dim myElements() 表示“将 myElements 声明为变体数组”。Split 返回一个字符串数组。因此,不匹配。

您可以执行 Dim myElementsDim myElements as VariantDim myElements() as String 来解决该问题。

以下是其中每一项都有效的原因:

  1. Dim myElementsDim myElements as Variant

    这两者都意味着您将 myElements 声明为 Variant。变体是特殊类型,可以接受任何内容。因此,它们可以轻松地接受字符串数组。但是,变体具有较大的内存开销,应尽可能避免。

  2. 将 myElements() 调暗为字符串

    这意味着您将 myElements 声明为字符串数组。由于这与 Split 函数返回的类型相同,因此它被接受。

理想情况下,如果您知道函数的返回类型,则应该为变量指定正确的类型。因此,在本例中,Dim myElements() as StringSplit 函数返回的类型相同。

关于arrays - 将完整的拆分数组放入 VBA 变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30346682/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com