Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


36203 / 76732 ←次へ | 前へ→

【45712】Scripting.Dictionaryの使い方
質問  迷える子羊  - 07/1/12(金) 11:58 -

引用なし
パスワード
   あちこち調べてみましたが、Scripting.Dictionaryの使い方がどうも理しきれていません(-_-;)下記のコードについて質問させてください。Dictionaryがキーとitemをもてるオブジェクトということは理解しているつもりなのですが…。

Set myDic = CreateObject("Scripting.Dictionary")
'A列とC列の1〜最終行を選択
With Worksheets(strDataSheet)
   Set myRng = Intersect(Union(.Columns("A"), .Columns("C")), .UsedRange)
End With

i = 0
'2行目〜最終行までのループ
For idxRow = 2 To myRng.Rows.Count
'A列+C列をDictionaryのKeyにする
  myKey = myRng(idxRow, 1) & vbTab & myRng(idxRow, 2)
'Keyが存在しなかったら
  If Not myDic.exists(myKey) Then
    i = i + 1
    myDic(myKey) = i        ←この意味は? 
    myRng(i, 1) = myRng(idxRow, 1) ←この意味は?
    myRng(i, 2) = myRng(idxRow, 2) ←この意味は?
    myRng(i, 3) = 1        ←この意味は?  
'Keyが存在したら
  Else
    myRng(myDic(myKey), 3) = myRng(myDic(myKey), 3) + 1
  End If
Next

i = 0
'集計結果の出力 ※これでは結果が出ませんでしたのでどこか間違っていそうです
With Worksheets(strOutputSheet)
  idxRow = idxMaxRow
  For lngIdx = 2 To myRng.Rows.Count
    i = i + 1
    .Cells(idxRow, 1) = myRng(i, 1) ←これが間違い?
    .Cells(idxRow, 2) = myRng(i, 2) ←これが間違い?
    .Cells(idxRow, 3) = myDic(myKey) ←これが間違い?
  Next
End With

1 hits

【45712】Scripting.Dictionaryの使い方 迷える子羊 07/1/12(金) 11:58 質問
【45717】Re:Scripting.Dictionaryの使い方 neptune 07/1/12(金) 13:36 回答
【45718】Re:Scripting.Dictionaryの使い方 迷える子羊 07/1/12(金) 13:54 質問
【45719】Re:Scripting.Dictionaryの使い方 neptune 07/1/12(金) 14:28 回答

36203 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free