如何使用';雷迪姆保留';在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