• ベストアンサー

VBA Dictionaryの使い方

以下のネットで見つけたコードについての質問です。 dicにデータを登録するコードが見当たらないのに、 なぜIf (dic.Exists(sS)) Thenとして、使えるのでしょうか? 出典 https://oshiete.goo.ne.jp/qa/9060260.html Option Explicit Public Sub Samp1()   Dim dic As Object, dicE As Object   Dim vA As Variant   Dim sS As String   Dim i As Long, j As Long   Const CMK As String = "☆"   Set dic = CreateObject("Scripting.Dictionary")   Set dicE = CreateObject("Scripting.Dictionary")   With Worksheets("管理票")     With .Range("A2", .Cells(Rows.Count, "A").End(xlUp)).Resize(, 3)       vA = .Value       For i = 1 To UBound(vA)         sS = ""         For j = 1 To UBound(vA, 2)           sS = sS & "_" & vA(i, j)         Next         If (dic.Exists(sS)) Then           vA(i, 1) = CMK           vA(dic(sS), 1) = CMK           dicE(vA(i, 2)) = Empty         Else           vA(i, 1) = Empty           dic(sS) = i         End If       Next       .Columns(1).Offset(, 6).Value = vA     End With     If (dicE.Count > 0) Then       .Activate       MsgBox "下記の管理番号が重複しています" & vbCrLf & vbCrLf _           & Join(dicE.Keys, vbCrLf)     End If   End With   Set dic = Nothing   Set dicE = Nothing End Sub

質問者が選んだベストアンサー

  • ベストアンサー
  • SI299792
  • ベストアンサー率47% (793/1659)
回答No.2

dic(sS) = i で登録しています .Addを使わなくても、代入すれば登録されます。

gennya
質問者

お礼

いつも回答ありがとうございます。 朝起きたら、ようやくdic(sS) = iが目に飛び込んできて、分かりました。おっしゃる通りですね。

Powered by GRATICA
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • kkkkkm
  • ベストアンサー率66% (1747/2623)
回答No.1

dic.Existsはdicに引数で指定したデータ(sS)が存在するかどうかを判断するものですので

gennya
質問者

お礼

いつも回答ありがとうございます。 よくあることですが、朝は頭が冴えているのですね。最初は必ずifがfalseでelseに飛ぶので、そこでデータが入力されてました。

Powered by GRATICA
すると、全ての回答が全文表示されます。

関連するQ&A