[算表] VBA的Array問題...

作者: tinkens (十戒*行屍走肉)   2021-02-06 23:44:12
軟體: 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不是應該會保留前面陣列中的值嗎?
作者: soyoso (我是耀宗)   2021-02-07 08:43:00
將二個變數的宣告移出觸發程序,放置最上方模擬上除了將變數移置外,TextBox_Total2前面有調整再連接arrA(1)和arrB(1)的部分就會是 https://i.imgur.com/cz66JXm.gif我回文已經寫了"放置最上方"並沒有要原po移到其他sub底下,就是移置到最上方
作者: waiter337 (給開司一罐蘇格登)   2021-02-16 03:42:00
原因就是 按鈕結束就會清空按鈕內的任何陣列你把陣列放到外面 就相當於放在表單上 表單只要沒關起陣列都會存在若依上狀況要再將資料傳到工作表 必須在關閉表單之前傳

Links booklink

Contact Us: admin [ a t ] ucptt.com