[算表] 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