2017-06-30 3 views
0

アーリーバインディングを使用してエラーが発生するため、私はレイトバインディングを使用します。代わりに3 activesheet名を示すの
、出力はこのVBA:キーペア辞書

キーのようなものです:値:

は前にこれを試したことはありません。誰かが私を正しい方向に向けることができますか? Scripting.Dictionaryで

Sub LoopKeys() 

Dim key As Variant 
Dim country As Variant 

country = Array("Kentucky", "California", "Ohio") 

dic.Add "Kentucky", "Alicia" 
dic.Add "California", "Ken" 
dic.Add "Ohio", "Benjamin" 

For sheet = LBound(country) To UBound(country) 
ThisWorkbook.Worksheets(country(sheet)).Activate 

    If ActiveSheet.Name = " & key & " Then 
     Debug.Print "Key: " & key & " Value: " & dic(key) 
    End If 

Next 

End Sub 

答えて

1

Keysコレクションをあなたがループに必要なオブジェクト:

Dim key As Variant 
For Each key In dic.Keys 
    Debug.Print "Key: " & key & " Value: " & dic(key) 
Next key 

を更新1:


Sub LoopKeys() 
    Dim dic As Scripting.Dictionary 
    Set dic = New Scripting.Dictionary 

    Dim s As Worksheet 
    For Each s In ThisWorkbook.Sheets 
     dic.Add key:=CStr(s.Index), Item:=s.Name 
    Next s 

    Dim key As Variant 
    For Each key In dic.Keys 
     Debug.Print "Key: " & key & " Value: " & dic(key) 
    Next key 

    Set dic = Nothing 
End Sub 

'Key: 1 Value: Sheet1 
'Key: 2 Value: Sheet2 
'Key: 3 Value: Sheet3 

アップデート2:


Sub LoopKeys() 
    Dim dic As Scripting.Dictionary 
    Set dic = New Scripting.Dictionary 

    With dic 
     .Add key:="Kentucky", Item:="Alicia" 
     .Add key:="California", Item:="Ken" 
     .Add key:="Ohio", Item:="Benjamin" 
    End With 

    Dim key As Variant 
    For Each key In dic.Keys 
     ThisWorkbook.Worksheets(key).Activate 
     Debug.Print "Key: " & key & " Value: " & dic(key) 
    Next key 

    Set dic = Nothing 
End Sub 
+0

とにかく私の状況に適用できますか?私は活性シート名を取得したい。 またはこの関数は実際に適合しませんか? – Santa

+0

あなたがしようとしていることがわかりません。ループワークシート? –

+0

hmm ..私はシート(キー)をアクティブにしようとしていて、それに私に値を表示させようとしていますか?私のワークブックには3枚以上あります。私はそれらの3つがほしいだけです。シートをループして一度に1つずつアクティブにすることで、私はそれぞれの価値があると思います。それがケンタッキー州のシートにあるとき、私はアリシアを価値として見たいと思っていますか? – Santa