Я хотел бы использовать оператор IF в моем коде VBA, где я вызываю функцию и передаю ей два параметра. Причина, по которой мне нужен оператор IF, заключается в том, что параметр является объектом массива, который я передаю функции. Вот это аббревиатура от кода, который содержит задачу:Могу ли я иметь оператор «If» в параметре функции?
For i = 1 To UBound(FilterArray)
For j = LBound(ptsheets, 1) To UBound(ptsheets, 1)
Filter_PivotField_Master _
pvtField:=ThisWorkbook.Worksheets(ptsheets(j, 1)).PivotTables(ptsheets(j, 2)).PivotFields(FilterArray(i, 1)), _
FilterTypeArray:= If FilterArray(i, 2) = 1 Then
InvCodeArray
Else
BoardMonthArray
End If
Next j
Next i
Как вы можете видеть, я перекручивание через массив ptsheets и для каждой записи, я звоню вверх Filter_PivotField_Master функции. Для функции требуется два входа (сводное поле и строковый массив для фильтрации). Массив, называемый FilterArray, просто содержит информацию, необходимую для передачи функции. Поскольку я не могу хранить массив строк (InvCodeArray или BoardMonthArray) в «FilterArray», я хотел использовать этот оператор IF для выбора между массивом, основанным на том, что FilterArray (i, 2) равен «1», или нет. Возможна ли опция утверждения «IF» здесь?
Это сработало отлично. Спасибо! – AGryckiewicz
@AGryckiewicz FYI Я только что проверил это с помощью инструмента * Extract Method * рефакторинга моей надстройки Rubberduck VBE, и он сработал. Вы можете посмотреть на это. –
Ницца. Я действительно не понимаю, что такое «инструмент рефакторинга» и какова цель, которую он обслуживает, но мне интересно узнать больше. Благодарим за передачу информации. – AGryckiewicz