作者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/cn.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