Pelena, можете уточнить, как вы отключили проверку объявления переменной массива Z() при работающем Option Explicit? Я вставил код в боевой файл, изменил диапазон массива справочников. При активации макроса выходит сообщение "Variable not defined" и выделяется строка кода [vba]
Код
Private Sub TextBox1_Change()
[/vba] и переменная Z. Объявил переменную массива Z() as String, но ошибка повторяется.
Pelena, можете уточнить, как вы отключили проверку объявления переменной массива Z() при работающем Option Explicit? Я вставил код в боевой файл, изменил диапазон массива справочников. При активации макроса выходит сообщение "Variable not defined" и выделяется строка кода [vba]
Код
Private Sub TextBox1_Change()
[/vba] и переменная Z. Объявил переменную массива Z() as String, но ошибка повторяется.Мурад
тоже добавьте стандартный модуль и объявите переменную. Если же стандартные модули уже есть в "боевом" файле, то добавьте Public Z в любой из нихPelena
"Черт возьми, Холмс! Но как??!!" Ю-money 41001765434816
добавил, спасибо. а есть возможность переноса текста в листбоксе, чтобы пользователь мог прочитать наименование товара полностью? Форму поиска увеличить могу вширь.
добавил, спасибо. а есть возможность переноса текста в листбоксе, чтобы пользователь мог прочитать наименование товара полностью? Форму поиска увеличить могу вширь.
Подскажите, в текущем варианте кода при активации ячейки отображается пустая форма, в которой начинают появляться записи при вводе хотя бы 1 символа в поле поиска. Как сделать так, чтобы при активации ячейки отображалась форма уже со всеми записями и далее список меняется, как обычно, при вводе фразы в поле поиска. Я пробовал до условия с циклом писать Me.Listbox1.List = Z (или Z()), не работает. Нужен еще один цикл, но без проверки условия ввода текста в поле поиска?
Подскажите, в текущем варианте кода при активации ячейки отображается пустая форма, в которой начинают появляться записи при вводе хотя бы 1 символа в поле поиска. Как сделать так, чтобы при активации ячейки отображалась форма уже со всеми записями и далее список меняется, как обычно, при вводе фразы в поле поиска. Я пробовал до условия с циклом писать Me.Listbox1.List = Z (или Z()), не работает. Нужен еще один цикл, но без проверки условия ввода текста в поле поиска?Мурад
Erjoma1981, спасибо за подсказку! Немного поправил код, чтобы список отображался в нужном формате.
[vba]
Код
Option Explicit Option Compare Text
Private Sub UserForm_Initialize() Dim i As Long Me.ListBox1.ColumnCount = 2 Me.ListBox1.TextAlign = fmTextAlignRight Me.ListBox1.ColumnWidths = "370;80" For i = 1 To UBound(Z, 1) 'поиск по любому вхождению Me.ListBox1.AddItem Me.ListBox1.List(Me.ListBox1.ListCount - 1, 0) = Z(i, 1) & Space(200) Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = Format(Z(i, 2), "Standard") & " руб." & Space(5) Next i End Sub
Private Sub TextBox1_Change() Dim i As Long, j As Long, txt As String txt = TextBox1.Text Me.ListBox1.Clear Me.ListBox1.ColumnCount = 2 Me.ListBox1.TextAlign = fmTextAlignRight Me.ListBox1.ColumnWidths = "370;80"
If Len(txt) Then For i = 1 To UBound(Z, 1) 'поиск по любому вхождению If InStr(Z(i, 1), txt) Then Me.ListBox1.AddItem Me.ListBox1.List(Me.ListBox1.ListCount - 1, 0) = Z(i, 1) & Space(200) Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = Format(Z(i, 2), "Standard") & " руб." & Space(5) End If Next i Else: For i = 1 To UBound(Z, 1) 'поиск по любому вхождению Me.ListBox1.AddItem Me.ListBox1.List(Me.ListBox1.ListCount - 1, 0) = Z(i, 1) & Space(200) Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = Format(Z(i, 2), "Standard") & " руб." & Space(5) Next i
End If End Sub
Private Sub ListBox1_Click() If ListBox1.ListIndex = -1 Then Exit Sub Me.Label4.Caption = RTrim(Me.ListBox1.Value) End Sub
Private Sub CommandButton1_Click() Dim o1 As Worksheet
ActiveCell.Value = Me.Label4.Caption
Unload Me End Sub
[/vba]
Erjoma1981, спасибо за подсказку! Немного поправил код, чтобы список отображался в нужном формате.
[vba]
Код
Option Explicit Option Compare Text
Private Sub UserForm_Initialize() Dim i As Long Me.ListBox1.ColumnCount = 2 Me.ListBox1.TextAlign = fmTextAlignRight Me.ListBox1.ColumnWidths = "370;80" For i = 1 To UBound(Z, 1) 'поиск по любому вхождению Me.ListBox1.AddItem Me.ListBox1.List(Me.ListBox1.ListCount - 1, 0) = Z(i, 1) & Space(200) Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = Format(Z(i, 2), "Standard") & " руб." & Space(5) Next i End Sub
Private Sub TextBox1_Change() Dim i As Long, j As Long, txt As String txt = TextBox1.Text Me.ListBox1.Clear Me.ListBox1.ColumnCount = 2 Me.ListBox1.TextAlign = fmTextAlignRight Me.ListBox1.ColumnWidths = "370;80"
If Len(txt) Then For i = 1 To UBound(Z, 1) 'поиск по любому вхождению If InStr(Z(i, 1), txt) Then Me.ListBox1.AddItem Me.ListBox1.List(Me.ListBox1.ListCount - 1, 0) = Z(i, 1) & Space(200) Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = Format(Z(i, 2), "Standard") & " руб." & Space(5) End If Next i Else: For i = 1 To UBound(Z, 1) 'поиск по любому вхождению Me.ListBox1.AddItem Me.ListBox1.List(Me.ListBox1.ListCount - 1, 0) = Z(i, 1) & Space(200) Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = Format(Z(i, 2), "Standard") & " руб." & Space(5) Next i
End If End Sub
Private Sub ListBox1_Click() If ListBox1.ListIndex = -1 Then Exit Sub Me.Label4.Caption = RTrim(Me.ListBox1.Value) End Sub
Private Sub CommandButton1_Click() Dim o1 As Worksheet