Как заставить Listbox.List хранить информацию о типе? - PullRequest
0 голосов
/ 22 октября 2018

Если я воздействую на полный массив на ListBox, используя, например, ListBox1.List = [{1;2;3;4}], элементы .List в Listbox сохраняют свой правильный тип (здесь числа), но если я использую ListBox1.AddItem 5 или Listbox1.List(5) = 6, чтобы установить отдельное лицоitem тип автоматически меняется на String.

Пример кода:

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

enter image description here

Позже, сравнивая значения, я получаю неправильные результаты, потому что числа не равны тексту (5 <>"5").

Есть ли простой (1) способ убедиться, что тип элементов списка не преобразован вString?

(1) Я знаю, что могу явно выполнить преобразование в строку, но я предпочитаю сохранять свои значения в виде чисел, а не "числа, заштрихованные как текст" в списке

1 Ответ

0 голосов
/ 22 октября 2018

Я думаю, это будет невозможно при использовании AddItem.Согласно https://docs.microsoft.com/en-us/office/vba/api/access.listbox.additem, первый параметр является строкой, поэтому все, что вы передаете, будет преобразовано в строку.

Вероятно, вам лучше всего собрать все элементы в массиве и назначить массив с помощью ListBox1.List.Или вы должны жить с числами, хранящимися в виде строки ...

Обновление Я перепутал страницы - ссылка на страницу доступа была неправильной.
В любом случае, документация довольно плохая.Он говорит «действительный объект» , но не определяет, что это значит.По крайней мере, невозможно добавить object, который выбрасывает несоответствие типов.

Кроме того, в документации говорится, что возвращается Variant, но кажется, что это не так - когда я пытаюсь получить результат, компилятор выдает ошибку.

В заключение,Я предполагаю, что AddItem преобразует все в строку (и выдает ошибку, если это не удается).Поэтому я по-прежнему предполагаю, что вам нужно создать массив и присвоить его List, если вы хотите иметь действительные числа.

...