0

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

示例代码:

Private Sub UserForm_Initialize()
    ListBox1.List = [{1;2;3;4}]
    ListBox1.AddItem 5
    ListBox1.AddItem
    ListBox1.List(5) = 6
End Sub

在此处输入图像描述

后来,在比较值时,我得到了错误的结果,因为数字不等于文本(5 <>"5")。

是否有任何简单的(1)方法来确保列表项的类型不转换为String

(1) 我知道我可以显式转换为字符串,但我宁愿将我的值保留为数字,而不是列表框中的“numbers-strored-as-text”

4

1 回答 1

0

我想这在使用时是不可能的AddItem。根据https://docs.microsoft.com/en-us/office/vba/api/access.listbox.additem,第一个参数是字符串,因此您传递的所有内容都将转换为字符串。

最好的选择可能是收集数组中的所有项目并使用ListBox1.List. 或者你必须忍受存储为字符串的数字......

更新 我把页面弄混了——访问页面的链接是错误的。
无论如何,文档相当差。它说“有效对象”,但没有定义这意味着什么。至少不可能添加object- 会引发类型不匹配。

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

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

于 2018-10-22T10:10:04.453 回答