Если вам нужен размерный массив, то это единственный способ объявить массив. Если вы хотели Non размеров массива, то можно использовать,
Dim pages()
pages = Array(9, 16, 25, 34, 43)
Однако, вы также можете сделать это,
Dim pages()
ReDim pages(5)
pages = Array(9, 16, 25, 34, 43)
Приходя к вашей проблеме, вы можете получить это происходит с помощью функции фильтра. Хотя есть очень маленькая проблема. Filter метод принимает в строке, так что даже с этой функцией вашего будет соответствовать 1, 2, 3, 4, 5, 6 вместе с реальными/фактическими значениями 9, 16, 25, 34, 43.
В,
- 1 происходит в 16.
- 2 происходит в 25.
- 3 происходит в 34 и 43.
- 4occurs в 34 и 43.
- 5 происходит в 25.
- 6 происходит в 16.
Он по-прежнему считает, что они встречаются в строке. Один из способов обойти это - форматировать числа как два литерала. Что-то вроде.
Dim pages(), g As Integer
ReDim pages(5)
pages = Array("09", "16", "25", "34", "43")
For g = 1 To 50
If UBound(Filter(pages, Format(g, "00"))) > -1 Then
'Do Cool Stuff here
Else
'Do Boring Stuff here
End If
Next
EDIT:
Другой способ заключается в создании определенной функции пользователя, которые могли бы Петля через массив и найти, если значение найдено в массиве. Что-то вроде,
Public Function FindArrayElement(SearchArray As Variant, LookupValue As Integer) As Boolean
Dim aCtr As Integer
For aCtr = 0 To UBound(SearchArray)
If CLng(SearchArray(aCtr)) = LookupValue Then
FindArrayElement = True
Exit Function
End If
Next
FindArrayElement = False
End Function
Функция принимает два аргумента. Первый - это массив, в котором определены значения, второй - значение, которое искал. Таким образом, ваш исходный код изменится.
Dim pages(), g As Integer
ReDim pages(5)
pages = Array(9, 16, 25, 34, 43)
For g = 1 To 50
If FindArrayElement(pages, g) Then
'Do Cool Stuff here
Else
'Do Boring Stuff here
End If
Next
Не существует оператора 'in', который вы указали в VBA. Однако вы можете инициализировать флаг, сделать цикл 'For'-' Each' (который действительно использует ключевое слово 'in') для перебора элементов 'pages' и установить флаг (и выйти из цикла) если 'g' равно текущему элементу' page'. После цикла флаг сообщает вам, видел ли вы один из значений 'g' во внутреннем цикле в' страницах', таким образом, вы должны были бы ветвиться в зависимости от флага и 'DoCoolStuff' или' DoBoringStuff'. Дайте мне знать, если это поможет, или если вам нужен ответ, показывающий именно это в коде. – TheBlastOne