Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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
Arrays 覆盖&;在excelvba中调整数组大小_Arrays_Excel_Resize_Overwrite_Vba - Fatal编程技术网

Arrays 覆盖&;在excelvba中调整数组大小

Arrays 覆盖&;在excelvba中调整数组大小,arrays,excel,resize,overwrite,vba,Arrays,Excel,Resize,Overwrite,Vba,关于PatricK评论的回复,请参见结束 抱歉,如果这是一个基本的问题,但我一直在这里和其他网站寻找,无法找到答案 这是我第一次尝试VBA数组(我对VBA基本上是新手),我正在努力学习一些语法。我试图将工作表中的一些数据(单列的一部分)读入数组,对其进行一些处理,将其写入另一张工作表,然后用从第一张工作表中读取的更多数据覆盖数组。一个关键点是,每次迭代读取的数据点数量会有所不同(例如,第一个循环上有4个数据点,第二个循环上可能有3个数据点……),因此数组大小也应该改变 我的代码尝试在第一次迭代中

关于PatricK评论的回复,请参见结束

抱歉,如果这是一个基本的问题,但我一直在这里和其他网站寻找,无法找到答案

这是我第一次尝试VBA数组(我对VBA基本上是新手),我正在努力学习一些语法。我试图将工作表中的一些数据(单列的一部分)读入数组,对其进行一些处理,将其写入另一张工作表,然后用从第一张工作表中读取的更多数据覆盖数组。一个关键点是,每次迭代读取的数据点数量会有所不同(例如,第一个循环上有4个数据点,第二个循环上可能有3个数据点……),因此数组大小也应该改变

我的代码尝试在第一次迭代中有效,但它似乎没有在第二次循环中拾取数据,而是将数组留空。这是我的代码(很抱歉,如果格式不正确,我目前只能通过手机访问互联网!):

这里i和io是决定我感兴趣的细胞的变量;它们每个都随总体循环而变化

正如我提到的,这只适用于第一次迭代。任何关于我错在哪里的指点都将不胜感激

提前感谢,, 萨姆

----------------------------------------------------------------------------------- 帕特里克,为了进一步澄清,这里有一个简单的例行公事来说明你的观点

**格式化检查失败(仍在电话上书写),因此不允许我发布。以下是文本文件中代码的dropbox链接:


它工作一次的一个可能原因可能是“执行处理”代码激活了另一个工作簿。也不确定为什么使用2D数组存储1D数组值

但请尝试:

Dim oWB as Workbook
' Loop Start

Set oWB = ActiveWorkbook
'Or Set oWB = Workbooks("<workbook name you are trying to get the data from>")    
With oWB.Worksheets("Sheet1").Range("A" & i & ":A" & io)
    ReDim DataSubSet(1 To .Rows.Count, 1 To .Columns.Count)
    DataSubSet = .Value
End With

' Do Processing and finish loop above this line
Set oWB = Nothing
Dim oWB作为工作簿
'循环启动
设置oWB=ActiveWorkbook
'或设置oWB=工作簿(“”)
带有oWB.工作表(“表1”).范围(“A”&i&“:A”&io)
ReDim数据子集(1到.Rows.Count,1到.Columns.Count)
DataSubSet=.Value
以
'在此行上方执行处理和完成循环
设置oWB=Nothing
表1中的测试数据:

查看变量
DataSubSet
(我已经设置了
I=3
io=10
):


Hi Sam,当您将数组分配给范围时,它会自动调整大小,因此不需要使用
ReDim
行。另外,尝试在赋值行追加
.Value
DataSubSet=.Range(…).Value
。看看
io
I
是如何更新的会很有帮助,问题可能就在这里。嗨,洛恩尼斯,谢谢你的评论。我已经确认我和io工作正常。下面的PatricK(不知怎么的)设法解决了这个问题,不过还是要谢谢你!帕特里克,非常感谢你的帮助,问题解决了!不幸的是,我不完全理解为什么/如何。我将在下面发布一个快速跟进问题。但再次感谢你,我欠你的债!PatricK,我已将我的问题作为文本文件上传到上面链接的dropbox文件夹中。谢谢
Dim oWB as Workbook
' Loop Start

Set oWB = ActiveWorkbook
'Or Set oWB = Workbooks("<workbook name you are trying to get the data from>")    
With oWB.Worksheets("Sheet1").Range("A" & i & ":A" & io)
    ReDim DataSubSet(1 To .Rows.Count, 1 To .Columns.Count)
    DataSubSet = .Value
End With

' Do Processing and finish loop above this line
Set oWB = Nothing