запись формулы Excel с несколькими вариантами для одного параметра

#excel #function #vba #parameters

#excel #функция #vba #параметры

Вопрос:

Я хотел бы получить доступ к информации из API на основе HTTP и манипулировать ею с помощью Excel.

API возвращает около 20 фрагментов информации, и вы можете получить эту информацию, просмотрев любое количество из примерно десяти полей поиска: имя, серийный номер и т.д.

Я хочу написать функцию, аналогичную функции сопоставления в Excel, где один из параметров (в данном случае ТИП СООТВЕТСТВИЯ) имеет несколько возможных значений.

У меня есть список значений (20 фрагментов информации, которые может возвращать API), и я хочу сделать эти фрагменты информации возможными возвращаемыми значениями для одного из параметров функции.

введите описание изображения здесь

Как мне создать функцию, в которой один параметр имеет список возможных значений? И как мне добавить инструкции всплывающей подсказки к этим параметрам параметров, чтобы люди знали, что это такое?

Комментарии:

1. Так в чем же здесь проблема? Любой UDF может принимать в аргументы несколько значений. Вы можете определить Enum для этого и принимать нужные значения. Всплывающие подсказки не могут отображаться для неродных функций (т.е. те, которые не созданы MSFT) любым простым способом. Есть хаки, которые выглядят как всплывающие подсказки, но ничего похожего на то, что вы видите здесь.

Ответ №1:

Вы хотите использовать перечисление.

В части объявлений вашего модуля (перед любыми вспомогательными элементами или функциями) вы можете разместить код, подобный этому.

 Enum MyFunctionsArgValue
    LessThan
    Equal
    GreaterThan
End Enum
  

Это присвоит каждому из этих ключевых слов целочисленное значение, начиная с нуля и заканчивая подсчетом. Так LessThan = 0 , Equal = 1 и GreaterThan = 2 . (На самом деле вы можете начать с любого числа, которое хотите, но по умолчанию обычно все в порядке.)

Теперь вы можете использовать ее в своей функции примерно так.

 Function MySuperCoolFunction(matchType as MyFunctionsArgValue)
    Select Case matchType
        Case LessThan
            ' do something
        Case Equal
            ' do it different 
        Case GreaterThan
            ' do the opposite of LessThan 
    End Select
End Function
  

Чтобы получить подсказку, вам нужно использовать нечто, называемое Attribute . Чтобы добавить ее в свой код, вам нужно экспортировать файл *.bas (или *.cls) и открыть его в обычном текстовом редакторе. После того, как вы ее добавили, вам нужно будет импортировать ее обратно. Эти свойства невидимы изнутри среды разработки VBA. Документация отрывочна (читай «несуществующая»), поэтому я не уверен, что это работает для Enum , но я знаю, что это работает для функций и переменных, ограниченных модулем.

Функция / вспомогательный

 Function MySuperCoolFunction(matchType as MyFunctionsArgValue)
Attribute MySuperCoolFunction.VB_Description = "tool tip text"
  

Переменная в области модуля

 Public someVar As String
Attribute someVar.VB_VarDescription = "tooltip text"
  

Итак, вы могли бы попробовать это, чтобы увидеть, работает ли это.

 Enum MyFunctionsArgValue
Attribute MyFunctionsArgValue.VB_VarDescription = "tool tip text"
    LessThan
    Equal
    GreaterThan
End Enum
  

Ресурсы