[算表] Excel定義多維陣列的長度

看板Office作者時間3年前 (2021/03/23 18:36), 編輯推噓1(1050)
留言51則, 3人參與, 3年前最新討論串1/1
軟體:Excel 版本:Office 2013 各位先進好! 我想請問一下在定義多維動態陣列時, 假如我需要計算一個適當的大小, 例如 變數經過運算後得到三個變數值mini = 3, maxi = 15, size = 8 想讓程式根據程式過程中得到的變數值而量身訂做一個多維矩陣 Dim matrix(mini To maxi,1 To length) as integer 就會出錯,說length必須要是常數, 可是mini To maxi都沒有問題, 就只有length有問題, 好奇怪! 不知道板上先進能不能解釋一下問題出在哪裡?該如何解套? 感謝各位先進的幫忙~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.134.107.3 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Office/M.1616495773.A.820.html

03/23 20:14, 3年前 , 1F
mini To maxi都沒有問題,就只有length有問題,這方面可以
03/23 20:14, 1F

03/23 20:14, 3年前 , 2F
只以mini To maxi
03/23 20:14, 2F

03/23 20:14, 3年前 , 3F

03/23 20:14, 3年前 , 4F
還是有問題的
03/23 20:14, 4F

03/23 20:14, 3年前 , 5F
先宣告matrix() as ....
03/23 20:14, 5F

03/23 20:14, 3年前 , 6F
再redim matrix(mini to maxi, 1 to....) ...
03/23 20:14, 6F

03/23 20:21, 3年前 , 7F
另外內文變數值要在執行redim前正確取得
03/23 20:21, 7F

03/25 01:37, 3年前 , 8F
請問s大 我如果一開始先dim matrix() as 程式會不會以為
03/25 01:37, 8F

03/25 01:37, 3年前 , 9F
我只是在定義一維向量?但其實我想要的是二維向量
03/25 01:37, 9F

03/25 01:38, 3年前 , 10F
我試的結果 似乎是多維度的最後一個維度長度不能是變數
03/25 01:38, 10F

03/25 01:38, 3年前 , 11F
S大因為用一維的 所以maxi會出現問題
03/25 01:38, 11F

03/25 01:38, 3年前 , 12F
還是我有誤解?
03/25 01:38, 12F

03/25 07:22, 3年前 , 13F
不是,用一維會誤會的話,一樣也用二維
03/25 07:22, 13F

03/25 07:22, 3年前 , 14F
Dim matrix(mini To maxi,1 To length) as integer,標記
03/25 07:22, 14F

03/25 07:22, 3年前 , 15F
在length
03/25 07:22, 15F

03/25 07:22, 3年前 , 16F
Dim matrix(mini To maxi, 1 To 10) As Integer,標記在
03/25 07:22, 16F

03/25 07:22, 3年前 , 17F
maxi
03/25 07:22, 17F

03/25 07:22, 3年前 , 18F
Dim matrix(mini To 10, 1 To 10) As Integer,標記在mini
03/25 07:22, 18F

03/25 07:22, 3年前 , 19F
必須是常數運算式
03/25 07:22, 19F

03/25 07:22, 3年前 , 20F
所以維度的上限(上標)或是下限(下標)只要是變數就會錯誤,
03/25 07:22, 20F

03/25 07:22, 3年前 , 21F
而非最後一個不能是變數
03/25 07:22, 21F

03/25 07:24, 3年前 , 22F
dim matrix()是動態的,不會只是定義一維,就看之後redim
03/25 07:24, 22F

03/25 07:59, 3年前 , 23F
補充一下,內文寫到length必須要是常數,可是mini To maxi
03/25 07:59, 23F

03/25 07:59, 3年前 , 24F
都沒有問題,這並不是指mini To maxi是正確的,而是在取得
03/25 07:59, 24F

03/25 07:59, 3年前 , 25F
1 To length這個上下限(標)時就產生錯誤,所以標記在
03/25 07:59, 25F

03/25 07:59, 3年前 , 26F
length這個地方
03/25 07:59, 26F

03/25 14:51, 3年前 , 27F
謝謝s大,接下來就有個問題,我應該要怎麼把length mini
03/25 14:51, 27F

03/25 14:51, 3年前 , 28F
maxi的數值取出來變常數?例如我定義另一個const lgth as
03/25 14:51, 28F

03/25 14:52, 3年前 , 29F
intger = length 會發生錯誤 可是這些變數是在程式計算過
03/25 14:52, 29F

03/25 14:52, 3年前 , 30F
程中計算出來的 我事先沒辦法知道 也不想中斷程式 所以想
03/25 14:52, 30F

03/25 14:53, 3年前 , 31F
知道如何把mini maxi length的數值取出來擺在matrix定義
03/25 14:53, 31F

03/25 14:53, 3年前 , 32F
中而不會發生錯誤?謝謝您的幫忙
03/25 14:53, 32F

03/25 15:54, 3年前 , 33F
那不要在程序內宣告而是移到模組Module的最上方宣告,寫入
03/25 15:54, 33F

03/25 15:54, 3年前 , 34F
值後也可以用於其他程序內,不同模組的話內public
03/25 15:54, 34F

03/26 23:03, 3年前 , 35F
不太懂s大的意思 是說如果在模組最上用public宣告 可是變
03/26 23:03, 35F

03/26 23:04, 3年前 , 36F
數還是變數 matrix()就會把public變數當常數看待嗎?
03/26 23:04, 36F

03/27 06:38, 3年前 , 37F
寫入值到變數後,如果不再重新寫入值,那變數內的值也就是
03/27 06:38, 37F

03/27 06:38, 3年前 , 38F
不變的常數
03/27 06:38, 38F

03/27 07:14, 3年前 , 39F
調整一下,除不再重新寫入值外,或重新寫入值都是相同時,
03/27 07:14, 39F

03/27 07:14, 3年前 , 40F
也會是常數
03/27 07:14, 40F

03/29 03:41, 3年前 , 41F
其實變數之後還會用到 所以我另外創一個變數去等於length
03/29 03:41, 41F

03/29 03:42, 3年前 , 42F
還是會發生錯誤的訊息 所以不知道是不是VBA不能接受變數
03/29 03:42, 42F

03/29 06:35, 3年前 , 43F
創一個變數去等於length還是會發生錯誤的訊息指的是什麼,
03/29 06:35, 43F

03/29 06:35, 3年前 , 44F
是指const lgth as intger = length這樣會有錯誤訊息嗎?
03/29 06:35, 44F

03/29 06:35, 3年前 , 45F
如果是的話,是的,無法這樣寫,這原po測試就發生錯誤訊息
03/29 06:35, 45F

03/29 06:35, 3年前 , 46F
了;那變數之後用的到,這裡"之後"指的如是執行巨集過程內
03/29 06:35, 46F

03/29 06:35, 3年前 , 47F
要將這個變數保留,於另一個程序內取得的話,就如我03/25
03/29 06:35, 47F

03/29 06:35, 3年前 , 48F
15:54回文的方式。這方面就試試,試了無法達成,就提供如
03/29 06:35, 48F

03/29 06:35, 3年前 , 49F
何寫的和要的結果,會比較清楚
03/29 06:35, 49F

04/04 01:15, 3年前 , 50F
dim matrix
04/04 01:15, 50F

04/04 01:15, 3年前 , 51F
redim matrix(mini To maxi,1 To length)
04/04 01:15, 51F
文章代碼(AID): #1WMSITWW (Office)