Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 移动字符串';将单个字符放入数组_Excel_Vba - Fatal编程技术网

Excel 移动字符串';将单个字符放入数组

Excel 移动字符串';将单个字符放入数组,excel,vba,Excel,Vba,我的宏中有一部分试图获取字符串并将字符分解为其自己的数组值,如下所示: 'matchName As String is called from the Sub parameter Dim matchArray(1 To 30) As Characters Dim i As Integer i = 1 While Mid(matchName, i, 1) <> "" matchArray(i) = Mid(matchNam

我的宏中有一部分试图获取字符串并将字符分解为其自己的数组值,如下所示:

    'matchName As String is called from the Sub parameter

    Dim matchArray(1 To 30) As Characters
    Dim i As Integer

    i = 1

    While Mid(matchName, i, 1) <> ""

        matchArray(i) = Mid(matchName, i, 1)
        i = i + 1

    Wend
从子参数调用matchName As String 尺寸匹配数组(1到30)作为字符 作为整数的Dim i i=1 而Mid(匹配名称,i,1)” 匹配数组(i)=中间(匹配名称,i,1) i=i+1 温德 据我所知,这应该运行得很好,但我遇到了:

运行时错误“91”:“未设置对象变量或带块变量”

老实说,我不明白为什么会这样,我希望能有另一双眼睛(或更多!)来看看我是否遗漏了什么。

以下是如何做到这一点:

Dim matchArray
Dim i As Long

ReDim matchArray(1 To Len(matchName))
For i = 1 To Len(matchName)
    matchArray(i) = Mid(matchName, i, 1)
Next

虽然上述方法可以很好地发挥作用,但这在一行中更有趣,没有循环:

myArray = Evaluate("transpose(mid(""" & matchName & """,row(1:" & Len(matchName) & "),1))")
以下是如何做到这一点:

Dim matchArray
Dim i As Long

ReDim matchArray(1 To Len(matchName))
For i = 1 To Len(matchName)
    matchArray(i) = Mid(matchName, i, 1)
Next

虽然上述方法可以很好地发挥作用,但这在一行中更有趣,没有循环:

myArray = Evaluate("transpose(mid(""" & matchName & """,row(1:" & Len(matchName) & "),1))")

字符
不是您想要的。您想要的
字符串
字符
不是您想要的。你想要
String
。我不敢相信我没有想到Len()。。。我真是太傻了哈哈,谢谢你!我刚刚注意到了这一点,但有没有理由重新定义数组而不是简单地编码“Dim matchArray(1到Len(matchName))?我将其作为一个变体进行了Dim,因此在开始之前它需要是一个数组。雷迪姆做到了。我讨厌静态数组,这就是在dim语句中定义维度时得到的结果。动态数组更有用。非常酷,感谢您的快速响应,我已经很久没有做过任何编码了,最近我又回到了动态数组中工作了(有点)。我不敢相信我没有想到Len()。。。我真是太傻了哈哈,谢谢你!我刚刚注意到了这一点,但有没有理由重新定义数组而不是简单地编码“Dim matchArray(1到Len(matchName))?我将其作为一个变体进行了Dim,因此在开始之前它需要是一个数组。雷迪姆做到了。我讨厌静态数组,这就是在dim语句中定义维度时得到的结果。动态数组更有用。非常酷,感谢您的快速响应,我已经很久没有做过任何编码了,最近我又回到了它中工作(有点)。