VBA陣列暫時鎖定是怎麼回事

2021-10-18 13:36:38 字數 894 閱讀 5008

動態陣列在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...