[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使用循环写到阵列 " target="_blank">" class="img-responsive" />" target="_blank" rel="nofollow">
" target="_blank">" class="img-responsive" />
作者: 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是两个不同变量感谢,我也学到很多" target="_blank" rel="nofollow">
可以参考一下唷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