gpt4 book ai didi

excel - 分配给数组

转载 作者:行者123 更新时间:2023-12-05 09:27:06 24 4
gpt4 key购买 nike

在声明 String 和 Variant 类型的数组时,我无法理解何时需要/不需要括号。

  1. 这按预期工作(声明 Pieces WITHOUT brackets,作为 Variant):
Dim str
str = "The quick fox"
Dim Pieces As Variant
Pieces = Split(str)
MsgBox(Pieces(1))

输出:快速

  1. 这行不通(用方括号声明 Pieces,作为 Variant):
Dim str
str = "The quick fox"
Dim Pieces() As Variant
Pieces = Split(str)
MsgBox(Pieces(1))

“类型不匹配”

  1. 这行得通(用方括号声明 Pieces,作为字符串):
Dim str
str = "The quick fox"
Dim Pieces() As String
Pieces = Split(str)
MsgBox(Pieces(1))

输出:快速

  1. 这行不通(将没有括号的 Pieces 声明为字符串):
Dim str
str = "The quick fox"
Dim Pieces As String
Pieces = Split(str)
MsgBox(Pieces(1))

不会编译“期望的数组”

我能理解 4. 不工作。但我无法理解 Variant 版本(1. 和 2.)无法以相同方式工作的原因以及动态字符串数组 (3.) 在不使用 ReDim 的情况下如何工作?

最佳答案

根据 Split function 的手册它返回一个从零开始的一维数组,其中包含指定数量的子字符串。

这意味着 Split() 函数返回一个字符串数组,这与 Dim Pieces() As String 相同。但是如果你声明 Dim Pieces() As Variant 这意味着 Pieces 被声明为一个 array of variants 并且你不能放置一个字符串数组成一系列变体。

如果声明 Dim Pieces As Variant,则变量 PiecesVariant 并且 Variant 可以包含任何类型.所以它也可以包含一个数组(或任何其他类型或对象的值)。

所以这里的区别是:

  1. Dim Pieces() As Variant 这里变量定义为 Variants
  2. 的数组
  3. Dim Pieces As Variant 这里变量被定义为任何东西。

Dim Pieces() As String Split() 的返回值类型不是 Variants< 的数组 因此与第一个不兼容。


最后是下面的

Dim Pieces() As String
Pieces = Split(str)

在没有 ReDim 的情况下工作,因为 Dim Pieces() As String 将变量定义为一个任意 大小的数组。 Split() 返回一个数组,因此我们可以将其放入变量 Pieces 中而不会出现任何问题。

关于excel - 分配给数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72908721/

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