Страницы: 1
RSS
Ошибка загрузки данных в listbox при двойном клике на ячейке диапазона, ошибка;381 Could not set the list property. Invalid property array index.
 
Добрый день. При двойном клике на ячейках диапазона C13:C206 выдает ошибку 381 Could not set the list property. Invalid property array index. Я так понимаю, значения собираются но не заносятся в listbox. Не могу понять в чем проблема. Как исключить ошибку и вывести заполненный Listbox?
Изменено: Станислав Вьюжанин - 14.01.2022 13:20:45
 
Цитата
написал:
Не могу понять в чем проблема
если рассматривать каждую строку кода отдельно - то все вроде бы нормально
но если рассматривать весь этот код вместе - это похоже на бред
проблема в бессвязном, полном необьяснимых загадок коде
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Как вариант:
1. Убрать Dim arrFull() As Variant в процедуре Private Sub Worksheet_BeforeDoubleClick листа Price.
2. В самой процедуре Private Sub Worksheet_BeforeDoubleClick у всех arrFull убрать скобки.
3. Добавить отдельный модуль. В нём объявить Public arrFull As Variant на уровне модуля.

Про неоптимальность кода - промолчу.
 
Цитата
tolikt написал:Про неоптимальность кода - промолчу.
Вам это не удалось. Теперь все об этом знают.
 
При запуске напрямую UserForm_Initialize(), данные в listbox загружаются.
Код
Public Sub UserForm_Initialize()
arrFull = Worksheets("Price_of_material").Range("Materials_name").Value
ListBoxItems.List = arrFull
Me.TextBoxItems.SetFocus
End Sub

Но ошибка при вызове FormSearch.Show 0 сохраняется.
 
Цитата
Станислав Вьюжанин написал:
ошибка при вызове FormSearch.Show 0 сохраняется
настоятельно рекомендую ознакомиться:
Отлов ошибок и отладка кода VBA
Что такое переменная и как правильно её объявить?
Variable not defined или что такое Option Explicit и зачем оно нужно?
На момент клика по ячейкам и вызова формы у Вас arrFull ничем не заполнен. И действительно - откуда бы? Ведь эта переменная не объявлена нигде как глобальная, а значит и взяться ей в форме неоткуда.
Вам надо добавить стандартный модуль(Insert -Module) и объявить в нем эту переменную:
Код
Public arrFull
тогда код заработает. Может не совсем как хотелось бы(будет смещено выделение в listBox) - но с этим разбирайтесь уже отдельно в процессе.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
Дмитрий(The_Prist) Щербаков написал: As Variant
Большое спасибо за помощь.
Все заработало.
Изменено: vikttur - 15.01.2022 21:04:02
Страницы: 1
Наверх