作者tinkens (十戒*行屍走肉)
看板Office
標題[算表] VBA的Array問題...
時間Sat Feb 6 23:44:12 2021
軟體: Excel
版本: 2013
VBA新手快被陣列搞昏惹Q_Q
我有一個UserForm如下,大意上就是有兩個TextBox
然後按輸入之後會把TextBox_A和TextBox_B放到TextBox_Total裡面
而因為這兩個值之後還會有用,所以要把兩個值順便放進arr1()和arr2()裡面
┌─────────┐ ┌─────────┐
│┌───────┐│ │┌───────┐│
││ TextBox_A ││ ││TextBox_Total1││
│└───────┘│ │└───────┘│
│┌───────┐│ │┌───────┐│
││ TextBox_B ││ ││TextBox_Total2││
│└───────┘│ │└───────┘│
│ ┌────┐│ └─────────┘
│ │ 輸入 ││
│ └────┘│
└─────────┘
VBA如下:
Dim arrA() as string
Dim arrB() as string
If TextBox_A <> "" and TextBox_B <> "" then
If TextBox_Total1 = "" then
ReDim Preserve arrA(1)
arrA(1) = TextBox_A
ReDim Preserve arrB(1)
arrB(1) = TextBox_B
TextBox_Total1 = TextBox_A & TextBox_B
Else
ReDim Preserve arrA(2)
arrA(2) = TextBox_A
ReDim Preserve arrB(2)
arrB(2) = TextBox_B
TextBox_Total2 = TextBox_A & TextBox_B
End If
End If
當我Run第一次的時候,arrA(1) = TextBox_A和arrB(1) = TextBox_B都很正常
當輸入第二組時,arrA(2) = TextBox_A和arrB(2) = TextBox_B也是正常
!!!!!!But!!!!!!!!!
這時候的arrA(1)和arrB(1)的值卻變成空白了Q___Q這是怎麼回事
ReDim有加上Preserve不是應該會保留前面陣列中的值嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.185.248.104 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Office/M.1612626254.A.492.html
1F:→ soyoso: 將二個變數的宣告移出觸發程序,放置最上方 02/07 08:43
2F:→ soyoso: 模擬上除了將變數移置外,TextBox_Total2前面有調整再連接 02/07 08:43
3F:→ soyoso: arrA(1)和arrB(1)的部分 02/07 08:43
我這段Code是在Private Sub Buttom_Click()底下的
如果要把Dim arrA() 和 Dim arrB()移到UserForm的其他Sub底下
反而會提示說arrA(1) arrB(1)沒有定義變數耶@@a
5F:→ soyoso: 我回文已經寫了"放置最上方" 02/07 11:36
6F:→ soyoso: 並沒有要原po移到其他sub底下,就是移置到最上方 02/07 11:43
喔喔喔!!!原來可以這樣放@@!!!
我一直以為所有的Code就是要放在Sub ~ End Sub這中間
太感謝惹XDDD這樣可以順便整理一下我的Code了
※ 編輯: tinkens (111.185.248.104 臺灣), 02/07/2021 11:46:25
7F:推 waiter337: 原因就是 按鈕結束就會清空按鈕內的任何陣列 02/16 03:42
8F:→ waiter337: 你把陣列放到外面 就相當於放在表單上 表單只要沒關起 02/16 03:42
9F:→ waiter337: 陣列都會存在 02/16 03:42
10F:→ waiter337: 若依上狀況要再將資料傳到工作表 必須在關閉表單之前傳 02/16 03:48