Anton T
Если задача формулируется так
Цитата:
Код: Dim strAr() As String
Dim i As Integer, j As Integer
Dim ws As Worksheet
Private Sub TextBox1_Change()
FillLB (TextBox1.Text)
End Sub
Sub FillArray()
For Each ws In ActiveWorkbook.Worksheets
If Len(ws.Name) = 1 Then
For Each r In ws.UsedRange.Rows
ReDim Preserve strAr(i)
strAr(i) = ws.Cells(r.Row, ws.UsedRange.Column).Value
i = i + 1
Next r
End If
Next ws
End Sub
Private Sub UserForm_Initialize()
i = 0
ListBox1.Clear
FillArray
FillLB (TextBox1.Text)
End Sub
Sub FillLB(strMask As String)
ListBox1.Clear
For j = 0 To i - 1
If StrComp(Left(strAr(j), Len(TextBox1.Text)), strMask, 1) = 0 Then
ListBox1.AddItem strAr(j)
End If
Next j
End Sub
Если задача формулируется так
Цитата:
пробегаем по каждому листу в книге, если его имя состоит из одной буквы, пробегаем по всему первому заполненному столбцу и добавляем значения его ячеек в листбокс на форме. кроме того, при вводе в текстбокс начала фамилии в листбоксе должны отображаться только те фамилии, которые с этого начинаютсято код такой
Код: Dim strAr() As String
Dim i As Integer, j As Integer
Dim ws As Worksheet
Private Sub TextBox1_Change()
FillLB (TextBox1.Text)
End Sub
Sub FillArray()
For Each ws In ActiveWorkbook.Worksheets
If Len(ws.Name) = 1 Then
For Each r In ws.UsedRange.Rows
ReDim Preserve strAr(i)
strAr(i) = ws.Cells(r.Row, ws.UsedRange.Column).Value
i = i + 1
Next r
End If
Next ws
End Sub
Private Sub UserForm_Initialize()
i = 0
ListBox1.Clear
FillArray
FillLB (TextBox1.Text)
End Sub
Sub FillLB(strMask As String)
ListBox1.Clear
For j = 0 To i - 1
If StrComp(Left(strAr(j), Len(TextBox1.Text)), strMask, 1) = 0 Then
ListBox1.AddItem strAr(j)
End If
Next j
End Sub