VBA - Поиск не показывает несколько записей в списке - PullRequest
0 голосов
/ 14 октября 2018
 Private Sub CommandButton10_Click()

'listbox column headers
 Me.ListBox1.AddItem
 For A = 1 To 7
 Me.ListBox1.List(0, A - 1) = Sheet2.Cells(1, A)
 Next A
 Me.ListBox1.Selected(0) = True

'Populating listbox from search
 Dim i As Long
 For i = 2 To Sheet2.Range("A100000").End(xlUp).Offset(1, 0).Row
 For j = 1 To 7
 H = Application.WorksheetFunction.CountIf(Sheet2.Range("A" & 2, "G" & i), _
 Sheet2.Cells(i, j))
 If H = 1 And LCase(Sheet2.Cells(i, j)) = LCase(Me.TextBox2) Or H = 1 And _
 Sheet2.Cells(i, j) = Val(Me.TextBox2) Then
 Me.ListBox1.AddItem
 For x = 1 To 7
 Me.ListBox1.List(ListBox1.ListCount - 1, x - 1) = Sheet2.Cells(i, x)
 Next x
 End If
 Next j
 Next i

'Count the listbox rows when populated
 With Me.ListBox1
 For x = 0 To .ListCount - 1
    TextBox3 = x
 Next x
 End With

End Sub

Привет всем, мне нужна помощь, пожалуйста, может кто-нибудь сказать мне, почему мой код не выполняет поиск всего в листе, относящемся к тексту, например, есть 2 одинаковых элемента в листе с разными серийными номерами, но когдаЯ ищу предмет, только 1 запись показывает.Благодаря.

1 Ответ

0 голосов
/ 14 октября 2018

Я думаю, вам следует изменить:

 H = Application.WorksheetFunction.CountIf(Sheet2.Range("A" & 2, "G" & i), Sheet2.Cells(i, j))

на:

 H = Application.WorksheetFunction.CountIf(Sheet2.Range("A" & i, "G" & i), Sheet2.Cells(i, j))

, чтобы:

  • в строке поискапо строке

  • следующая проверка If H = 1 And LCase(Sheet2.Cells(i, j)) ... не исключает каких-либо возможных многократных вхождений одного и того же элемента (который вернул бы H> 1, если считать от строки 2 вниз)

примечание: таким образом вы пропустите любое возможное совпадение для элемента, имеющего несколько вхождений в одной строке

...