Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.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
Vba 如何声明数量可变的索引字符串?_Vba_Excel - Fatal编程技术网

Vba 如何声明数量可变的索引字符串?

Vba 如何声明数量可变的索引字符串?,vba,excel,Vba,Excel,我希望声明多个变量,并且要声明的变量数量取决于输入,因此类似于: Sub Main() Dim TotalNumber As Long TotalNumber = InputBox("Please enter total number of words") Dim i As Long Dim MsgDisp As String Dim Words(1 To TotalNumber) As String For i = 1 To TotalNumber String(i) = In

我希望声明多个变量,并且要声明的变量数量取决于输入,因此类似于:

Sub Main()
Dim TotalNumber As Long
    TotalNumber = InputBox("Please enter total number of words")
Dim i As Long
Dim MsgDisp As String
Dim Words(1 To TotalNumber) As String
For i = 1 To TotalNumber
    String(i) = InputBox("Please type the words for number " & i)
    MsgDisp = MsgDisp & String(i) & Chr(10)
Next i
MsgBox(MsgDisp)
End Sub
然而,我在第6行得到了“需要常量表达式”错误。 非常感谢您的帮助……

我想应该是文字(i)。不是绳子。另外,我认为你不会接受这样的变量。

应该是我认为的单词(i)。不是绳子。此外,我不认为dim会以这种方式接受变量。

使用以下子项:

    Sub Main()
        Dim TotalNumber As Long
            TotalNumber = Val(InputBox("Please enter total number of words"))
        Dim i As Long
        Dim MsgDisp As String
        Dim Words() As String
        ReDim Words(TotalNumber)
        For i = 1 To TotalNumber
            Words(i) = InputBox("Please type the words for number " & i)
            MsgDisp = MsgDisp & Words(i) & Chr(10)
        Next i
        MsgBox MsgDisp
    End Sub
使用以下子项:

    Sub Main()
        Dim TotalNumber As Long
            TotalNumber = Val(InputBox("Please enter total number of words"))
        Dim i As Long
        Dim MsgDisp As String
        Dim Words() As String
        ReDim Words(TotalNumber)
        For i = 1 To TotalNumber
            Words(i) = InputBox("Please type the words for number " & i)
            MsgDisp = MsgDisp & Words(i) & Chr(10)
        Next i
        MsgBox MsgDisp
    End Sub

执行此操作的方法是,首先无边界声明数组,然后重新命名它:

Dim Words() As String
'Other code
ReDim Words(1 To TotalNumber)
在代码的后续过程中,您甚至可以扩展数组。但是为了避免数组被破坏,您添加了Preserve关键字:

TotalNumber = TotalNumber + 1
ReDim Preserve Words(1 To TotalNumber)

编辑以删除重拨后的“作为字符串”。再次编辑以添加Preserve关键字。

执行此操作的方法是首先声明无边界数组,然后重新命名它:

Dim Words() As String
'Other code
ReDim Words(1 To TotalNumber)
在代码的后续过程中,您甚至可以扩展数组。但是为了避免数组被破坏,您添加了Preserve关键字:

TotalNumber = TotalNumber + 1
ReDim Preserve Words(1 To TotalNumber)

编辑以删除重拨后的“作为字符串”。再次编辑以添加保留关键字。

您必须使用
ReDim
like
ReDim Words(TotalNumber)
重新调整数组长度。您必须使用
ReDim
like
ReDim Words(TotalNumber)
重新调整数组长度。谢谢!就这样。我不知道尺寸必须单独定义。谢谢!就这样。我不知道尺寸必须单独定义。