Макрос застрял в цикле For Each при заполнении ListBox - PullRequest
0 голосов
/ 11 марта 2019

У меня есть следующий код для заполнения списка:

For Each cellValue In Sheet7.Range("A:A").Cells
    If cellValue.value = Get_ClientID(TextBox1.Text) Then
        equipmentName = Get_EquipmentName(Sheet7.Cells(cellValue.row, 2))
        numeroCalibracao = TextBox6.Text
        ultimacalibracao = TextBox5.Text
        ListBox1.AddItem equipmentName
        ListBox1.List(ListBox1.ListCount, 1) = numeroCalibracao
        ListBox1.List(ListBox1.ListCount, 2) = ultimacalibracao
    End If
Next

Проблема в том, что при запуске Excel перестает отвечать на запросы, и даже Ctrl + Break не удается вырваться из цикла.Он должен заполнить список в соответствии с количеством совпадающих записей на листе 7. Я попытался заменить ListBox1.Listcoun числами, но это все равно не будет работать.Чего мне не хватает?

Информация:

  • Get_ClientID - это функция, которая принимает строку и возвращает целое число;
  • Get_EquipmentName - этофункция, которая принимает целое число и возвращает строку;
  • cell value, equipmentName, numeroCalibracao и ultimaCalibracao являются переменными Dim ed в начале подпрограммы.

Если потребуется дополнительная информация, пожалуйста, сообщите мне, и я предоставлю.

1 Ответ

2 голосов
/ 11 марта 2019

Проблема в вашем основном цикле, вы проходите каждую строку в столбце А. Я предлагаю вам установить диапазон на "Range("A1:A" & LastRow), где LastRow - ваша последняя строка, например:

LastRow = Range("A:A").Find(what:="*", After:=Range("A1"), LookAt:=xlPart, LookIn:=xlFormulas, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False).row

Если он по-прежнему не отвечает, добавьте DoEvents в ваш цикл.

...