При запуске напрямую 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 сохраняется.
Добрый день. При двойном клике на ячейках диапазона C13:C206 выдает ошибку 381 Could not set the list property. Invalid property array index. Я так понимаю, значения собираются но не заносятся в listbox. Не могу понять в чем проблема. Как исключить ошибку и вывести заполненный Listbox?
Щелкнул два раза на ячейке B11, Вызвал Listbox, но в нем все данные с листа материалы, а должны быть только данные из малярки: лак и краска. Помогите пожалуйста отфильтровать список. Соответственно, когда нажимаю на ячейке В10 должны выводиться только данные Малярка, а остальных видно не должно быть. Спасибо.
Выбираем необходимые данные на листе "Список" желтый столбец. Далее многоуровневым списком относит нас на лист материалы. Но данные с листа материалы не копируют гиперссылку, а так же не позволяют использовать поиск. Помогите пожалуйста с многоуровневым списком. Спасибо. P.S. Что бы начать список заново, приходиться пропускать одну строку.
Потрясающая форма, но я не смогу такую воссоздать ((( Я не понимаю как он данные поддаскивает из файла. Могу предположить, что скорее всего через этот макрос:
Код
Private Sub bC_Click()
Dim arr(), x, i&, n&
ReDim arr(UBound(arrFull))
For i = 0 To Me.lb.ListCount - 1
If Me.lb.Selected(i) Then arr(n) = Me.lb.List(i): n = n + 1
Next i
If n = 0 Then
If Me.lb.MultiSelect = fmMultiSelectSingle Then MsgBox "При вызове формы для одиночного выделения нельзя сформировать список из всего отфильтрованного!", vbExclamation, "ПУСТО": Exit Sub
If MsgBox("Ничего не выбрано…" & vbLf & "Сформировать список из ВСЕГО ОТФИЛЬТРОВАННОГО" & vbLf & "(" & Me.lb.ListCount & " элементов)?", vbYesNo + vbQuestion + vbDefaultButton1) = vbNo Then Exit Sub
ReDim arr(0 To UBound(arrFull)): n = 0
For Each x In Me.lb.List
arr(n) = x: n = n + 1
Next x
End If
fin: ReDim Preserve arr(n - 1): FS_arr = arr: Unload Me
End Sub
Спасибо большое "evgeniygeo" за код, долго не мог разобраться как такое написать:
Код
Set fcell = Sheets("Состав").Columns("B:B").Find(ActiveCell)
If Not fcell Is Nothing Then
Cells(ActiveCell.Row, 1) = Sheets("Состав").Cells(fcell.Row, 1)
Cells(ActiveCell.Row, 4) = Sheets("Состав").Cells(fcell.Row, 3)
Cells(ActiveCell.Row, 6) = Sheets("Состав").Cells(fcell.Row, 5)
End If
. Касательно ваших вопросов: Не совсем понимаю, как Вы хотите чтобы выходил список? Нажали два раза мышкой и что должно произойти? Должна появится форма со списком (Listbox) или тот же самый выпадающий список (ТЫЦ)? хотелось бы видеть в виде выпадающего списка, но с поиском, что бы можно было искать по первым буквам. И объясните чем Вас не устраивает выпадающий список в моем примере? выпадающий список очень хороший, но на последнем листе, данные с гитерссылками на веб сайты, а гиперссылки не перетаскиваются формулами, поэтому и хочу двойным кликом открывать одни данные, а если они выполнены то открывать другие данные. Для примера, при выбирании данных с ячейки B9 и ниже в выпадающем списке одни данные, а при изменении условия, например в B6 в выпадающем списке другие данны, но сделать их по условию пока не знаю как. Спасибо большое за помощь.
Я видел работу таблицы в таком формате. Двойным кликом меняем значение в столбце В3:В1000 листа "Список", но сейчас столбец В3:В1000 формируется выпадающим списком, а не двойным кликом.
Спасибо "evgeniygeo". Я создавал многоуровневые выпадающие списки наименованными диапазонами с помощью ДВССЫЛ (INDIRECT) и формул. Добавил во вложение. Но поскольку значений много порядка 10000 строк, хотелось бы реализовать с помощью макроса в виде двойного клика на ячейке и с поиском. Пытался реализовать через vba. Пока не получается.
Код
With Target
.Offset(, 1) = Price.Offset(, 1)
.Offset(, 4) = Price.Offset(, 3)
.Offset(, 6) = Price.Offset(, 5)
End With
Добрый день. Подскажите пожалуйста, как по двойному клику на листе "список" диапазона В3:В10000, появлялся диапазон по условию J3:J10000, с листа "Состав". То есть сделав двойной клик по ячейке B5 (Овощи), выводился перечень овощей с листа "Состав". После выбора которого данные вставлялись бы на лист "Список"
Добрый день. Подскажите пожалуйста как по двойному клику в столбце b6:b1000 по надписи овощи сортировка менялась по значению столбца A "да" D "Ово", а по двойному клику в столбце b6:b1000 по надписи морковь сортировка менялась по значению столбца A "да" D "Ово", E "мор"
Добрый день. Подскажите пожалуйста, почему фильтр скрывает строку 8. Пробовал менять If Target.Row <> 7 Then на If Target.Row <> 8 Then, тогда он все равно скрывает строк 8, но так как строка 8 свёрнута, таблицу назад не разворачивает. Решил проблему так
V написал: п.с. смысл с этого куска кода?Код ? 12345If ActiveCell.Value = "" Then ActiveCell.Value = Date + 7 Else ActiveCell.Value = Date + 7 End If
Если ячейка пустая при двойном клике дается неделя на устранение проблемы, если ячейка заполнена, то дата перемещается в право и дается еще неделя на устранение. Спасибо. Попробую добавить ваш код.
В строках 57, 58, 63, по двойному клику в каждой ячейке столбца G. Дата 19.02.2020 перемещается в столбец J соответствующей строки, при этом предыдущие даты в столбце J зачеркиваются но не удаляются.
Добрый день друзья. Нужна помощь. Необходимо с помощью двойного клика по диапазону в столбце G в столбец J. Не удаляя при этом значения в в ячейке J, но зачеркивая их.
Добрый день друзья. Помогите пожалуйста. Имеется таблица. Необходимо по двойному клику на диапазоне значений 7 столбца, перенести данное значение в 9 столбец, предварительно осуществить перенос имеющегося в этой таблице значения ниже. Исходная таблица Конечная таблица
vikttur написал: Ва именно ПОИСКПОЗ нужна и никакое другое решение задачи не подходит?
Vikttur, я решал данную проблему макросом так:
Код
With Range("Smeta_mat_volume")
.Formula = "=IF(AND(RC[16]=""äà"",OR(RC[70]=R4C22,R4C22=R20C[73])),ROUNDUP(RC[10]*RC[11],0),0)*IF(INDEX(Smeta_contractor_all_works,MATCH(Smeta_contractor_finish,Smeta_all_contractor,0),MATCH(RC76,Smeta_contractor_works,0))=""да"",1,0)"
.Calculate
.Value = .Value
End With
Конечно же рассмотрю любую помощь. Но пока идей, кроме как перебор, нет.
VB_Smeta_contractor_finish = .Range("Smeta_contractor_finish").Value
VB_Smeta_contractor_works = .Range("Smeta_contractor_works").Value
'$BX15 это VB_Smeta_full(i, 75) 75 столбец в уже скопированном массиве
Smeta_all_contractor = .Range("BZ2:BZ20").Value 'столбец в массиве VB_Smeta_contractor_works
Smeta_contractor_works = .Range("CA1:DH1").Value 'строка в массиве VB_Smeta_contractor_works
For sv = 1 To UBound(VB_Smeta_full)
If VB_Smeta_full(sv, 14) = 0 Then
VB_Smeta_full(sv, 4) = 0
VB_Smeta_volume(sv, 1) = VB_Smeta_full(sv, 4)
Else
If VB_Smeta_full(sv, 20) = "да" Then
If VB_Smeta_contractor = VB_Smeta_contractor_fix Then
VB_Smeta_full(sv, 4) = Round(VB_Smeta_full(sv, 14) * VB_Smeta_full(sv, 15), 0)
VB_Smeta_volume(sv, 1) = VB_Smeta_full(sv, 4)
Else
'в это место и должна встать эта злополучная формула
For sc = 2 To UBound(VB_Smeta_contractor_works) 'начинаем со 2 строки, т.к. в 1 строке работы
If VB_Smeta_full(1, sc) = VB_Smeta_contractor_finish Then
For sv = 2 To UBound(VB_Smeta_contractor_works) 'начинаем со 2 столбца, т.к. в 1 столбце компании
If VB_Smeta_full(sv, sc) = VB_Smeta_full(i, 75) Then
VB_Smeta_full(i, 4) = Round(VB_Smeta_full(i, 14) * VB_Smeta_full(i, 15), 0)
VB_Smeta_volume(i, 1) = VB_Smeta_full(i, 4)
End If
End If
End If
End If
Next