Я работаю над проектом Excel, где у меня есть пользовательская форма VBA с двумя элементами управления ListBox.Я загружаю их, присваивая массив свойству List.Появляются все ожидаемые данные, за исключением седьмого столбца, который является полностью пустым.
Почему весь этот столбец пуст?
Дополнительные сведения:
Theмассив содержит около 15 столбцов и 25 строк.
Седьмой столбец массива указан в Locals как тип Variant / Decimal.Он содержит UPC значений (до 14 цифр), хранящихся в базе данных как DECIMAL (14,0).
Ни одно из значений UPC не имеет значения NULL или пусто.Они действительно отображаются в массиве в окне Locals, и их можно получить из ListBox, просто не видно.
ListBox имеет ListStyle fmListStylePlain и MultiSelect fmMultiSelectMulti.
Хотя вы не можете Dim (объявить) переменную как Decimalможно преобразовать в десятичное число с помощью функции CDec: ?typename(CDec(4.5))
в окне Immediate.
Минимальный пример:
Создать пользовательскую форму с ListBox (Listbox1), двумя элементами управления TextBox (TextBox1 иTextBox2) и две кнопки команд (CommandButton1 и CommandButton2).
В модуле кода пользовательской формы вставьте следующий код:
Private Sub CommandButton1_Click()
Dim x(0 To 0, 0 To 0)
x(0, 0) = CDec(TextBox1.Text)
ListBox1.List = x
TextBox2.Text = ListBox1.List(0, 0)
End Sub
Private Sub CommandButton2_Click()
Dim x(0 To 0, 0 To 0)
x(0, 0) = CDbl(TextBox1.Text)
ListBox1.List = x
TextBox2.Text = ListBox1.List(0, 0)
End Sub
ЗапуститеUserForm, введите число (с десятичными знаками или без) в TextBox1, затем нажмите CommandButton1.ListBox1 остается пустым, но Textbox2 показывает значение.
Нажмите CommandButton2.ListBox1 и TextBox2 показывают значение.