我是靠谱客的博主 老迟到黑米,最近开发中收集的这篇文章主要介绍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 重点语句:所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部