2012-04-01 15 views

答えて

3

「0」と呼ばれるキーを持つ辞書のいずれかを期待してい

のための関数でのデータ型を定義する必要があるということです辞書内の0は値を保持しません。おそらく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を使用したい場合は、辞書に追加しているときに、たとえば

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

ため0を使用して、あなたはで0を使用することができます

sName = Inpt.Item(0) 

SNAPSHOT(ALL 3つの条件 - 0の使用と、1)

enter image description here

HTH

シド

+0

は、詳細な回答ありがとうございます!私はこれを確認したらすぐにこれをマークします –

+0

私の知る限り、辞書のキーは常にテキストです。上のコード例では、 "1"または "0" 'を使用する必要があると思います。 '.exists'でキーの存在を確認するのも良い考えです。 – Pynner

+0

@Pynner:はい。あなたは' .exists'で絶対に正しいです。私は故意に '.Exist'を使用しなかったので、上のケース2のように' 0'の使用法を示すことができます:)ケース2で気付くと '。(1)の代わりに'。(0) ) 'はエラーではなくヌル値を返します。 :) –

関連する問題