私はこれを実行すると、それはif文でIsInArray関数エラー:型が一致VBA
ByRef argument type mismatch
を言って私にエラーを与えます。
すべての配列がバリアントと宣言されていましたが、その関数を実行しようとするとエラーが表示されました。
ご協力いただければ幸いです。
sub sort()
Dim rowNo As Integer
Dim colNo As Integer
Dim PIList(6) As Long
Dim GSList(2) As Long
Dim FilterList(91) As Long
Dim currCellCont As Long
rowNo = 2
colNo = 2
PIList(6) = Array(0,1,2,3,4,5)
GSList(2) = Array(6,7)
FilterList(91) = Array(89752, 89753, 89754, 89755, 89756, 89757, 89758, 89759, 89760, 89761, 89762, 89763, 89764, 89765, 89766, 89767, 89768, 89769, 89770, 89771, 89772, 89773, 89774, 89775, 89776, 89777, 89778, 89779, 89780, 89781, 89782, 89783, 89784, 89785, 89786, 89787, 89788, 89789, 89790, 89791, 89792, 89793, 89794, 89795, 89796, 89797, 89798, 89799, 89800, 89801, 89802, 89803, 89804, 89805, 89806, 89807, 89808, 89809, 89810, 89811, 89812, 89813, 89814, 89815, 89816, 89817, 89818, 89819, 89820, 89821, 89822, 89823, 89824, 89825, 89826, 89827, 89828, 89829, 89830, 89831, 89832, 89833, 89834, 89835, 89836, 89837, 89838, 89839, 89840, 89841, 89842)
currCellCont = Cells(rowNo, colNo).Value
Do Until IsEmpty(currCellCont)
If IsInArray(currCellCont, PIList) Then
Cells(rowNo, 9).Value = "PI"
ElseIf IsInArray(currCellCont, GSList) Then
Cells(rowNo, 9).Value = "GS"
ElseIf IsInArray(currCellCont, FilterList) Then
Cells(roNo, colNo).Value = "Filter"
End If
currCellCont = Cells(rowNo + 1, colNo)
Loop
End Sub
Function IsInArray(lookingFor As Long, arr As Long) As Boolean
IsInArray = Not IsError(Application.Match(lookingFor, arr, 0))
End Function
このコードは、より多くの問題を抱えているIsInArray – JohnyL
には配列パラメータはありませんちょうど行方不明 '()' 'arr'に。 'PIList(6)= Array(0,1,2,3,4,5)'は 'Variant'配列を' Long'配列の6番目の位置(ゼロベースの場合は7番目の位置)に割り当てようとしています - "タイプの不一致"エラーが発生します。 – YowE3K