Я пытаюсь использовать ParamArray для передачи различных параметров одной и той же функции для имитации перегрузки функции.
- Один единственный
String
- Один
Workbook
объект, одинString
, а такжеInteger
Таким образом, пользователь может передавать разные аргументы одной и той же функции:
Function func(ParamArray params() As Variant)
blah = func("This is a string")
blah = func(wbSource, "SheetName", iRow)
Есть ли способ проверить типы аргументов? Мне нужно убедиться, что params() содержит правильные типы аргументов (один workbook
, один string
и один integer
).
Конечно, я могу жестко кодировать с кучей If-Else
, но что, если в будущем аргументов станет больше? Я думаю об использовании TypeName()
для сброса типов в массив String
, а затем провести сравнение. Но это все еще кажется громоздким. Есть ли лучший способ добиться этого?
Кстати, я не думаю, что Optional
— хорошая идея, потому что кто знает, сколько будет аргументов?
VarType
— гораздо более надежная, чемTypeName
, хотя и не менее громоздкая. - person Mathieu Guindon   schedule 14.06.2018