написать функцию Excel VBA, не зная, параметр является строкой или словарем - PullRequest
2 голосов
/ 01 апреля 2012

Как мне написать функцию в Excel vba , что-то вроде этого в php?

public function name($data) {

  if ($data==="*") {
    return "*";
  }

  if (isset($data[0])) {
    return $data[0];
  }
}

Самая большая проблема заключается в том, что мне нужно определить тип данных в функциидля моего параметра

Я ожидаю либо строку, либо словарь с ключом "0"

1 Ответ

3 голосов
/ 01 апреля 2012

A 0 в словаре не содержит никакого значения. A 1 возможно, может дать вам желаемый результат. Я не знаю php, но все, что я мог понять из приведенного выше кода и вашего требования, это то, что я придумал, поэтому я не уверен, что это то, что вы хотите?

Sub Sample()
    Dim Dict1 As Dictionary
    Dim sString As String

    Set Dict1 = New Dictionary

    With Dict1
      .CompareMode = BinaryCompare
      .Add 1, "Item 1"
    End With

    sString = "Sid"

    Debug.Print sName(Dict1)
    Debug.Print sName(sString)
End Sub

Public Function sName(Inpt As Variant) As Variant
    If TypeName(Inpt) = "Dictionary" Then
        sName = Inpt.Item(1)
    ElseIf TypeName(Inpt) = "String" Then
        sName = Inpt
    End If
End Function

EDIT

Если вы все еще хотите использовать 0, то при добавлении в словарь используйте 0, например

    With Dict1
      .CompareMode = BinaryCompare
      .Add 0, "Item 1"
    End With

и затем вы можете использовать 0 в функции, как показано ниже

sName = Inpt.Item(0)

SNAPSHOT (ВСЕ 3 УСЛОВИЯ - ИСПОЛЬЗОВАНИЕ 0 И 1)

enter image description here

НТН

Sid

...