[VBA]關於陣列的直接賦值

作者: marki (marki)   2017-01-26 21:58:49
各位大大好,小弟初學vba,想請問陣列要如何直接賦值呢
我試過幾種方法
作者: MashiroX421 (三峰真白)   2017-01-27 00:06:00
方法一的話,arr跟A並無相關性方法二,這樣寫等於是把陣列指定到陣列,會有矛盾寫成式子會像:arr(無,無,無)=Array(10,20,30)問3使用迴圈寫到陣列 http://imgur.com/kfuSNEu.png
作者: waiter337 (給開司一罐蘇格登)   2017-01-27 01:37:00
直接dim的時後就要給值了唷dim arr(10,20,30)但陣列使用上直接賦值我感覺我沒用過(應該是不太會用)而且redim 常常幾乎跟著用到但我不建議使用redim preserve大部份我們不是很專業不是很大量,那就乾脆拿大一點的盤子裝花生比較快建議基本看看之後直接redim成很大的二維陣列redim preserve(只限用一維陣列) 一排資料無法使用在二維陣列 ,譬如(100列 x 99行)假設要在加陣列,我印像是如果增加位置可以,但只能加最底下橫列所以一開始我就懶惰的關係,我一開始就會先開好大小只要redim 從最後一排+1的位置開始就可以或者我記反了,只能增加最右邊那直行
作者: MashiroX421 (三峰真白)   2017-01-27 07:13:00
直接dim arr(10,20,30)這樣是一開始就宣告為三維陣列與原PO一開始使用array放入的一維陣列不一樣另外redim preserve實際上可以用在二維陣列雖然它只能用在改變陣列中最後一維的上下限但可以透過使用工作表函數Transpose,將一、二維進行互換,再把需要的元素放入後,再轉置過來,亦可達成
作者: waiter337 (給開司一罐蘇格登)   2017-01-27 11:21:00
原來如此沒錯做到這裡 我都得在試錯個一兩次 經驗還不太多 哈哈應該是這樣啦 dim arr()={10,20,30}假如我要用成1,2,34,5,67,8,9的3x3 二維陣列就要dim arr(,) ={ {1,2,3} , {4,5,6} , {7,8,9} }或者arr(0,0) = 1arr(0,1) = 2arr(0,2)=3arr(1,0)=4arr(1,1)=5arr(1,2)=6arr(2,0)=7arr(2,1)=8arr(2,2)=9這種一開始要先dim arr 下一行 redim arr(2,2)
作者: fumizuki (矇面加菲獅)   2017-01-27 11:40:00
1. Array 傳回Variant,已固定型態的變數都無法接收2. 宣告時決定陣列大小、維度,亦無法接收 Variant 值是VBA還是.NET ? .NET 才能在宣告變數時初始化
作者: waiter337 (給開司一罐蘇格登)   2017-01-27 14:55:00
im arr(,) ={ {1,2,3} , {4,5,6} , {7,8,9} } 這個vba好像不能用 抱歉是vb跟.net才能用更正vba在dim的時候不能順便賦值包含dim arr(10,20,30) 這個也不行你的方法一,因為A跟Arr是兩個不同變數感謝,我也學到很多http://i.imgur.com/SbABe4M.jpg可以參考一下唷http://club.excelhome.net/thread-421452-1-1.html
作者: marki (marki)   2017-01-28 10:03:00
謝謝各位大大教學
作者: waiter337 (給開司一罐蘇格登)   2017-01-28 18:42:00
不過奇怪的是 為什麼arrx是從(1,1)開始的

Links booklink

Contact Us: admin [ a t ] ucptt.com