【发布时间】:2013-12-02 23:13:29
【问题描述】:
我需要知道如何使用用户输入将项目添加到现有数组。
我尝试过这样的事情:
Dim MyArray(100) as String
UBound(MyArray) = Inputbox("What's the name of your new array item?")
【问题讨论】:
标签: arrays vba excel user-input
我需要知道如何使用用户输入将项目添加到现有数组。
我尝试过这样的事情:
Dim MyArray(100) as String
UBound(MyArray) = Inputbox("What's the name of your new array item?")
【问题讨论】:
标签: arrays vba excel user-input
Ubound(myArray) 返回一个 Long 数据类型,它实际上返回数组的长度/大小。
如果要读取或分配值,则必须完全限定数组,即。
MyArray(ubound(myArray)) = "new Value" 或 MyArray(100) = "new Value"
Sub Main()
Dim MyArray(100) As String
MyArray(UBound(MyArray)) = InputBox("What's the name of your new array item?")
MsgBox MyArray(UBound(MyArray))
End Sub
【讨论】:
collectionObj.Add() 这样的简单方法会将新项目添加到当前队列的末尾。
您可以改用动态数组:
Dim MyArray() As String
' Then to add a new element:
Redim Preserve MyArray(1 to SafeUBound(MyArray) + 1)
MyArray(SafeUBound(MyArray)) = InputBox("Who's yer daddy?")
Function SafeUBound(vArray As Variant) As Long
Dim x As Long
On Error Resume Next
x = UBound(vArray)
If Err.Number = 0 Then
SafeUBound = x
Else
SafeUBound = 0
End If
End Function
调用 SafeUbound 是必要的,因为在未初始化的数组上调用 UBound 或 LBound 会引发错误。
【讨论】: