gpt4 book ai didi

arrays - VBA - 用字符串初始化数组的正确方法?

转载 作者:行者123 更新时间:2023-12-02 00:54:10 29 4
gpt4 key购买 nike

在写这篇文章之前,我在这里回顾了这个问题/答案:Declare and Initialize String Array in VBA

我试图了解声明和初始化数组不使用数据类型 VARIANT 的正确方法。

这是我的代码,它确实可以正常工作:

Function MakeLegalFilename(legalname As String) As String

Dim MyArray() As Variant
Dim x As Integer

MyArray = Array("<",">","?","@","%")

For x = LBound(MyArray) To UBound(MyArray)
legalname = Replace(legalname, MyArray(x), "", 1)
Next x

MakeLegalFilename = legalname

End Function

如果我将“Variant”更改为“String”,则代码会在 MyArray = Array(... 处失败,并出现运行时错误 13 类型不匹配。

如果我定义数组大小以匹配字符串中的字符数(总共 5 个,但数组从 0 开始):

Dim MyArray(4) As String
MyArray = Array("<",">","?","@","%")

现在我在 MyArray = Array(... 处收到编译错误,提示“无法分配给数组。”

我知道我可以用这种方式声明数组并使其工作(我用这种方式测试过):

 MyArray(0) = "<"
MyArray(1) = ">"
MyArray(2) = "?"
...
MyArray(4) = "%"

但是,如果我在整个字符列表中进行编码(比如 20 个),那么这样做很麻烦,而且,我想知道为什么另一种方式不起作用,因为这表明我有一个根本性的误解。在最基本的形式中,我的问题实际上是,为什么不这样做:

Dim MyArray(4) As String
MyArray = Array("<",">","?","@","%")

工作?

谢谢。

最佳答案

数组返回一个变体。

因此,如果您不了解变体,则无法使用它。

Split 可以分割字符串。

分割函数

描述

返回一个从零开始的一维数组,其中包含指定数量的子字符串。

语法

Split(expression[, delimiter[, limit[, compare]]])

将逗号分隔的字符串放入包含您的字符的分割中。

关于arrays - VBA - 用字符串初始化数组的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27726717/

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