如何使Listbox.List保留类型信息?

时间:2018-10-22 09:06:57

标签: vba listbox-control

如果我影响到ListBox的完整数组,例如使用ListBox1.List = [{1;2;3;4}],则Listbox的.List项将保持其正确的类型(此处为数字),但是如果我使用ListBox1.AddItem 5或{ {1}}可以将单个项目的类型自动更改为Listbox1.List(5) = 6

示例代码:

String

enter image description here

后来,在比较值时,我得到了错误的结果,因为数字不等于文本(Private Sub UserForm_Initialize() ListBox1.List = [{1;2;3;4}] ListBox1.AddItem 5 ListBox1.AddItem ListBox1.List(5) = 6 End Sub )。

是否有任何简便的方法(1)确保列表项的类型不转换为5 <>"5"

(1)我知道我可以明确地转换为String,但是我宁愿将值保留为数字,而不是将其保留在列表框中

1 个答案:

答案 0 :(得分:0)

我猜想在使用AddItem时这是不可能的。根据{{​​3}},第一个参数是字符串,因此您传递的所有内容都会转换为字符串。

最好的选择是收集数组中的所有项目,然后使用ListBox1.List分配数组。否则您必须忍受以字符串形式存储的数字...

更新 我将页面混在一起-链接到“访问”页面是错误的。
无论如何,文档是很差的。它说“有效对象” ,但未定义含义。至少不可能添加object-引发类型不匹配。

此外,文档指出返回了Variant,但事实并非如此-当我尝试获取结果时,编译器会引发错误。

作为结论,我假设AddItem将所有内容都转换为字符串(如果失败则抛出错误)。因此,我仍然假设您要建立一个数组并将其分配给List(如果您想拥有实数)。