Измените среднюю часть кода на ->
k = 0 ' need to initialize (and also add headings to row zero)
For i = LBound(ListBoxContents) To UBound(ListBoxContents)
For j = LBound(pArr, 1) To UBound(pArr, 1)
If ListBoxContents(i) = pArr(J, 1) Then ' pArr needs to be J
k = k + 1 ' got a match, ergo increment the output row
For m = 0 To UBound(pArr, 2) - 1
arr2(k, m) = pArr(J, m) ' move into col m, from pArr J row
Next m
End If
Next j
Next i
Exit Sub ' do not drop thru
Также как Comintern sez -> pArr никогда не присваивается значение.
Кроме того, вы получаете то, что вы хотите от
Dim i, j, k, m, ListSize As Integer