動態陣列在vba中經常用到,使用redim
可以修改動態陣列最後一維的上界,但是有時會出現執行時錯誤10,即:該陣列被固定或暫時鎖定,為什麼會出現這種錯誤呢?
【**解析】
這個測試**並不複雜,第3~6行**為動態陣列賦值,第4行**宣告動態陣列,其中preserve
關鍵字用於更改最後乙個維度的大小並保留陣列的內容。
第7~10行**使用for each
迴圈遍歷陣列,第9行**判斷陣列的值,如果等於3那麼將跳轉到100行,第12行**再次使用redim
修改動態陣列時,此時for each
迴圈並沒有正常結束,陣列仍處於鎖定狀態,無法修改陣列維度大小,因此將產生執行時錯誤10。
這樣的問題其實也不難解決,只要使用結構化程式設計方式,不使用goto
語句,就完全可以避免這樣的錯誤。
**如下:
sub demo(
)dim arr(
), i
for i =1to
5redim preserve arr(
1to i)
arr(i)
= i next
for each n in arr
debug.print n
if n =
3then
exit
fornext
redim preserve arr(1to
6)arr(6)
=6endsub
微軟官方文件:固定或暫時鎖定此陣列(錯誤 10) vba 陣列(動態陣列)
主要內容 本文章主要介紹vba中,陣列的使用,特別介紹動態陣列的使用,並有簡單事例,幫助理解。陣列是我們經常用到的儲存資料的一種媒介,他到底是什麼呢?陣列是具有相同資料型別並且共享乙個名字的一組變數的集合。通俗的說,陣列是變數。陣列的宣告 可以用dim語句或者public語句生命陣列。如 dim p...
vba 陣列 陣列引數
關於賦值 我看了很多本書都沒有看到這樣子的,包括官方文件,所以我就寫了下來。sub a dim a dim c a array 1,2,3,4 這裡a後面的 可以給也可以不給 c a end sub寫法一 sub a paramarray a as variant paramarray 可以用byr...
VBA陣列賦值
先說一下,剛才乙個錯誤的操作,連儲存的草稿都沒了,這也太懸了。以後還是在本地寫好了再放上來。陣列是這樣賦值的 dim a2 10 as integer 10是可以使用的最大上標,這和c語言不太一樣 dim a3 2 to 10 as integer 也可以定義下標 dim a1 as integer...