如何使用';雷迪姆保留';在excel vba中,当我不';我不知道上限值

如何使用';雷迪姆保留';在excel vba中,当我不';我不知道上限值,excel,vba,Excel,Vba,我需要从处理.txt文件期间生成的变量值填充数组。但是,上限取决于输入行。我怎样才能使下面的事情起作用 Dim myArr As Variant ReDim Preserve myArr(1) ' this line does not work without a value Do While (some condition) myArr=Trim(variable_name) Loop 通过使用计数器: Dim myArr As Variant Dim counter as In

我需要从处理
.txt
文件期间生成的变量值填充数组。但是,上限取决于输入行。我怎样才能使下面的事情起作用

Dim myArr As Variant
ReDim Preserve myArr(1)  ' this line does not work without a value

Do While (some condition)
    myArr=Trim(variable_name)
Loop
通过使用计数器:

Dim myArr As Variant
Dim counter as Integer

Do While (some condition)
    ReDim Preserve myArr(counter)
    myArr(counter)=Trim(variable_name)
Loop
比psuedo代码更进一步

Dim myArr as Variant
Dim counter as Integer
Dim x as Integer
x = 2

Do While x < 10
    ReDim Preserve myArr(counter)
    myArr(counter) = x
    debug.print Ubound(myArr)
    debug.print myArr(counter)
    x = x * 2 
Loop
Dim myArr作为变体
作为整数的Dim计数器
作为整数的Dim x
x=2
当x<10时,执行此操作
ReDim保留myArr(计数器)
myArr(计数器)=x
debug.print Ubound(myArr)
debug.print myArr(计数器)
x=x*2
环

检查循环中的条件,增加一个计数器,然后在一行中重新分配阵列。将有2个循环,但这将更快。这里有一种方法(未经测试)

Dim myArr作为变体
昏暗的柜台一样长
(在某种情况下)做某事
计数器=计数器+1
环

ReDim myArr(计数器)“这里有一个小代码snippt,可以帮助您理解:

Option Explicit
Sub ReDimTest()
    Dim counter As Long
    counter = 0
    Dim arr() As String

    'read first element from file
    Dim firstItem As String: firstItem = "1"
    'increment counter
    counter = counter + 1
    ReDim Preserve arr(counter)
    arr(counter) = firstItem
    'read second element from file
    Dim secondItem As String: secondItem = "2"
    'increment counter
    counter = counter + 1
    ReDim Preserve arr(counter)
    arr(counter) = secondItem
End Sub

您是否在.txt文件的所有行中循环,并以这种方式在数组中放置值?当满足特定条件时,是的,我需要将以下x行加载到数组中。每一行就是每一个值。检查循环中的条件,增加一个计数器,然后在一行中重新分配数组。将有2个循环,但在通过检查进入
集合
字典
对象的行中,这将是最快的。然后创建并填充数组。
.Count
属性将为您提供大小。只是好奇……当我使用'Dim arr As Variant'而不是'Dim arr()As String'时,它不起作用……知道为什么吗?@user3471438因为如果将变量声明为
Variant
,则不知道变量的实际类型,因此,
ReDim
可能不起作用,因为它只能与数组一起使用。
Option Explicit
Sub ReDimTest()
    Dim counter As Long
    counter = 0
    Dim arr() As String

    'read first element from file
    Dim firstItem As String: firstItem = "1"
    'increment counter
    counter = counter + 1
    ReDim Preserve arr(counter)
    arr(counter) = firstItem
    'read second element from file
    Dim secondItem As String: secondItem = "2"
    'increment counter
    counter = counter + 1
    ReDim Preserve arr(counter)
    arr(counter) = secondItem
End Sub