[VBA ] redim的作用

看板Visual_Basic作者 (Mark)時間9年前 (2015/04/15 20:23), 編輯推噓3(3024)
留言27則, 7人參與, 最新討論串1/1
請問版上大大有人可以用比較白話來解釋redim這個函數的作用嗎?? 因為在網路上看到的解釋都看不太懂,只知道用redim可以比較省記憶體 想請各位大大幫忙啦!!謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 163.22.18.73 ※ 文章網址: https://www.ptt.cc/bbs/Visual_Basic/M.1429100584.A.43B.html

04/15 20:30, , 1F
比較省是誰講的 可否提供網址拜讀一下
04/15 20:30, 1F

04/15 21:18, , 2F
網路上的解釋都看不懂我很懷疑,Google一搜就有MSDN
04/15 21:18, 2F

04/15 21:42, , 3F
重新配置記憶體大小
04/15 21:42, 3F

04/15 23:01, , 4F
redim不是函數,redim是陳述式,用來重新宣告陣列變數
04/15 23:01, 4F

04/15 23:03, , 5F
有沒有省記憶體是看你所有變數總共用了多少空間而定
04/15 23:03, 5F

04/15 23:04, , 6F
跟redim無關
04/15 23:04, 6F

04/16 11:22, , 7F
我猜 如果你一開始 Redim arr(99) 用完後 Redim arr(0)
04/16 11:22, 7F

04/16 11:23, , 8F
第二次 Redim arr(0) 就會省記憶體
04/16 11:23, 8F

04/16 15:34, , 9F
可是我以前看到都是dim k()玩一玩然後再redim k(5000)
04/16 15:34, 9F

04/16 15:34, , 10F
這樣怎麼會比較省記憶體
04/16 15:34, 10F

04/16 21:05, , 11F
http://ppt.cc/aPny 這裡有寫到ReDim 可以藉由減少
04/16 21:05, 11F

04/16 21:05, , 12F
陣列大小,釋放記憶體
04/16 21:05, 12F

04/17 00:36, , 13F
你寫什麼程式會寫到這樣釋放記憶體?來個scenario聽聽
04/17 00:36, 13F

04/17 09:10, , 14F
話說真的寫VB的時候,釋放通常就erase全放掉了,如果是用
04/17 09:10, 14F

04/17 09:10, , 15F
到ReDim的時候,通常是陣列已經不夠大,只會增加沒在減少
04/17 09:10, 15F

04/17 09:11, , 16F
的情況比較多XD
04/17 09:11, 16F

04/17 12:17, , 17F
記憶體不是1byte 1byte增加或減少
04/17 12:17, 17F

04/17 23:07, , 18F
是阿 redim就跟realloc一樣 用來擴張機會較大
04/17 23:07, 18F

04/18 13:52, , 19F
隱性差分求option
04/18 13:52, 19F

04/29 00:40, , 20F
之前寫程式有用到用在全域變數上
04/29 00:40, 20F

04/29 00:41, , 21F
例如我要宣告一個buttom陣列,但是不知道幾個,所以先在全
04/29 00:41, 21F

04/29 00:41, , 22F
域dim buttom1()
04/29 00:41, 22F

04/29 00:43, , 23F
然後在某個function裡下sql找出共十筆資料,所以要變成十
04/29 00:43, 23F

04/29 00:43, , 24F
個buttom1, 所以就要redim button1(10), 之後例如在某個fu
04/29 00:43, 24F

04/29 00:44, , 25F
nction下要對button(2)下enable=false就可以用了
04/29 00:44, 25F

04/29 00:44, , 26F
因為在全域下無法下sql等等的指令,所以採用這個方法
04/29 00:44, 26F

04/29 00:47, , 27F
可以看我之前文章有
04/29 00:47, 27F
文章代碼(AID): #1LBbWeGx (Visual_Basic)
文章代碼(AID): #1LBbWeGx (Visual_Basic)