【发布时间】:2021-02-28 04:02:20
【问题描述】:
我在工作中尝试开发的代码块遇到了问题。本质上,我在 Excel 中创建了一个用户表单,人们将在其中输入轨道车的数据,因为它们在特定位置加载(我们将这些称为“点 1、点 2、点 3 等”)。
有时他们必须将那辆车移动到不同的位置,在这种情况下,我希望他们能够保留轨道车上第一个/原始条目中的所有信息,然后从原始位置删除数据一旦完成。
为了以更精简的方式实现这一点,我为 5 个点中的每一个都建立了数组,这些点引用了他们在用户窗体上输入数据的所有单元格:
Dim spot1information(14)
spot1information(0) = UserForm.ProductType1.Value
spot1information(1) = UserForm.ProductID1.Value
spot1information(2) = UserForm.BatchID1.Value
etc....
Dim spot2information(14)
spot2information(0) = UserForm.ProductType2.Value
spot2information(1) = UserForm.ProductID2.Value
spot2information(2) = UserForm.BatchID2.Value
etc....
所有五个位置以此类推。我不知道这是否会使事情变得更加困难,但请注意,这些数组值并非都属于同一类型。例如,索引 (0) 将是一个字符串,但索引 (10) 是 DATETIME,索引 (12) 定义为 Long。
假设他们正在将汽车从地点 1 移动到地点 2。简而言之,我希望代码执行以下操作:
- 将 spot2information 中索引 0 - 6 的值(当前为空)替换为 spot1information 中索引 0 - 6 的值(用户已在用户表单中填写)。
- 我只对索引 0-6 感兴趣,因为它们包含相关的轨道车信息
- 将 spot1information 的每个值清空到“”
为此,我尝试了以下代码及其一些变体:
If OriginalSpot.Value = 1 Then
If DestinationSpot.Value = 2 Then
For i = 0 to 6
spot2information(i) = spot1information(i)
Next
For Each i in spot1information
spot1information(i) = ""
Next
End If
End If
但是,这不断出现类型不匹配。我想是因为 spot2information 数组中的数据是空的,而 spot1information 数组中的数据不是,但我不完全确定解决这个问题的方法。
更新:我做了下面的建议并替换:spot1information(i) = "" 与 Erase spot1information
代码现在基本上可以工作了!数组“spot2information”的值现在是以前的“spot1information”值,“spot1information”现在为空。
下面建议的 2D 数组也很有魅力。我一直面临的新问题是数组值正在更新,但用户表单没有。 (注意:将来我会将这类事情作为一个单独的问题发布,我深表歉意!)
【问题讨论】:
-
你的第二个循环应该有
i = "",因为i代表一个元素而不是索引。 -
你的意思是vbscript还是VBA?如果是后者,请更正您的标签。
-
建议如果一个问题已被回答,则接受适当的答案以完成该问题。如果在解决方案实施后出现“新问题”,则打开一个新问题。请不要一直在最初的问题中添加要求,这既不健康也不恰当。
-
当然,现在就在努力!谢谢指点!
标签: arrays excel vba for-loop userform