У меня есть следующий код для отображения вывода при выполнении кода.Все было в порядке, кроме вывода, отображаемого, когда доступны только одни данные.
Sub STELStatusCheck_click()
Dim MyArray()
Dim LastRow As Long, LastRow2 As Long
Dim ctr As Long
Dim ws As Worksheet
Application.ScreenUpdating = False
On Error Resume Next
LastRow = Sheet11.Cells(Sheet11.Rows.Count, 2).End(xlUp).Row
LastRow2 = Sheet13.Cells(Sheet13.Rows.Count, 2).End(xlUp).Row
With Sheet11
ctr = 0
For i = 4 To LastRow
If .Cells(i, 18) = "Closed" Then
If IsError(Application.Match(.Cells(i, 5).Value, Sheet13.Columns(5), 0)) Then
ReDim Preserve MyArray(0 To 2, 0 To ctr)
MyArray(0, ctr) = .Cells(i, 5).Value
MyArray(1, ctr) = .Cells(i, 6).Value
MyArray(2, ctr) = "Waiting Installation"
ctr = ctr + 1
ElseIf Not IsError(Application.Match(.Cells(i, 5).Value, Sheet13.Columns(5), 0)) And Evaluate("Sumproduct((sktPCE!e6:e" & LastRow2 & "=""" & _
.Cells(i, 5) & """)*(sktPCE!u6:u" & LastRow2 & "=""In Service""))") = 0 Then
ReDim Preserve MyArray(0 To 2, 0 To ctr)
MyArray(0, ctr) = .Cells(i, 5).Value
MyArray(1, ctr) = .Cells(i, 6).Value
MyArray(2, ctr) = "Waiting Installation"
ctr = ctr + 1
End If
End If
Next i
End With
With UserForm1
With .ListBox1
.Clear
.ColumnHeads = False
.ColumnCount = 3
.ColumnWidths = "50;50;50"
.List = Application.WorksheetFunction.Transpose(MyArray)
.TopIndex = 0
End With
.Show
End With
Application.ScreenUpdating = True
End Sub
1-й снимок - это то, что я сказал ненормальный, и он должен отображать вывод как 2-й снимок.
Ненормальныйвыход
![Abnormal output](https://i.stack.imgur.com/GLvNK.jpg)
Желаемый выход
![Desired output](https://i.stack.imgur.com/DfwtZ.jpg)