我是靠谱客的博主 老迟到黑米,最近开发中收集的这篇文章主要介绍VBA 在循环里多次redim动态数组一定注意,需要加preserve1 错误例子2 正确例子3 重点语句:,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
1 错误例子
For i = 1 To count_new
Randomize
p2 = Int(1 + 10 * Rnd)
Debug.Print "第" & i & "次随到的p2=" & p2
ReDim
arr7(1 To i)
'这里没写preserve 害的好惨!!
arr7(i) = p2
Debug.Print "arr7(" & i & ")=" & arr7(i)
Next
- 这里如果不加preserve
- 从现在赋值时看,每个arr7的内容都会是对的
- 但是每次赋值的时候,之前的内容全部都清空了
- 会导致 arr7() 这个数值最后只有1个元素是有值的,前面都是空元素
- 这个还不容易发现
- 但这个循环结束后,后面 再加1个循环遍历数值就发现了
2 正确例子
For i = 1 To count_new
Randomize
p2 = Int(1 + 10 * Rnd)
Debug.Print "第" & i & "次随到的p2=" & p2
ReDim Preserve arr7(1 To i)
arr7(i) = p2
Debug.Print "arr7(" & i & ")=" & arr7(i)
Next
3 重点语句:
- 我这里省略了,函数/过程开始,先 dim arr7() 如果不定义,arr7()会被认为是 函数而不是数组
- 动态数组 dim arr7() 每次使用前都要 先redim()
- 可以在循环里,多次,重复 redim (1 to i ) 但是这样会丢失之前得数据,只保留了数组arr7()最后一个数据。
- 可以在循环里,多次,重复 redim preserve (1 to i ) ,这个要注意,如果是preserve里 ,就得保证,arr7() 数组不能变小,否则可能之前得数据就无法 preserve了。
- 所以在循环里,动态,多次重复redim() 数组时,都要记得加preserve!!! 同时注意数组得不能变小才行!!!
- ReDim Preserve arr7(1 To i)
最后
以上就是老迟到黑米为你收集整理的VBA 在循环里多次redim动态数组一定注意,需要加preserve1 错误例子2 正确例子3 重点语句:的全部内容,希望文章能够帮你解决VBA 在循环里多次redim动态数组一定注意,需要加preserve1 错误例子2 正确例子3 重点语句:所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复