大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAで、「Dictionary」の「アイテム」を変更する方法について、ご紹介します。アイテムを変更するには、「キー」で検索して値を入力するとできます。「キーで検索」する方法と、「番号を指定」して変更する方法がありますので、状況に応じて使い分けていきましょう。

はじめに

この記事では、「Dictionary」の「アイテム」を変更する方法について、ご紹介します。

「Dictionary」の「アイテム」を変更するには、「キー」で検索して値を入力するとできます。

アイテムを変更する方法は、2つあります。

  • キーで検索して値を入力
  • 番号を指定して値を入力

という感じです。

状況に合わせて、アイテムを変更する方法を使い分けていきましょう。

では、「Dictionary」の「アイテム」を変更する方法について、解説していきます。

この記事で紹介すること

  • 「Dictionary」の「アイテム」を変更する方法

目次から見たい項目へ移動すると便利ですよ。

目次

VBAコードまとめ

「Dictionary」の「アイテム」を変更するVBAコードについて、まとめています。

VBAコードだけ確認したい場合に、ご活用ください。

'辞書のアイテムを変更
A("C") = "9999"

'番号を指定してアイテムを変更
Dim C
C = A.keys
A(C(2)) = "9999" '辞書のキーを変更

では、解説していきます。

Dictionaryに登録したアイテムを変更する

「Dictionary」に登録した「アイテム」を変更してみます。

キーで検索してアイテムを変更する

1つ目の方法で、「キーで検索」してアイテムを変更してみます。

「A(キー)」でキーで検索することで、アイテムを取得できますので、変更後のアイテムを入力します。

Sub TEST1()
    
    '辞書を登録
    Dim A
    Set A = CreateObject("Scripting.Dictionary")
    
    '値を登録する
    A.Add "A", "10"
    A.Add "B", "20"
    A.Add "C", "30"
    A.Add "D", "40"
    A.Add "E", "50"
    
    '辞書をループ
    For Each B In A
        '辞書を出力
        Debug.Print B & " " & A(B)
    Next
    
    '辞書のアイテムを変更
    A("C") = "9999"
    
    '辞書をループ
    For Each B In A
        '辞書を出力
        Debug.Print B & " " & A(B)
    Next
    
End Sub

変更前の値は、こんな感じです。

変更前の値

変更前の値

では、VBAコードを実行して、変更した後の値をみてみます。

アイテムを変更できた

アイテムを変更できた

「アイテム」を変更できました。

Existsでキーを確認してアイテムを変更する

キーで検索して変更する方法では、、「Exists」でキーを確認してアイテムを変更した方がいいです。

未登録のキーで検索してしまうと、新しく登録されてしまうからです。

ちょっとやってみます。

未登録のキーで検索すると登録されちゃう

未登録のキーで検索してみます。

Sub TEST2()
    
    '辞書を登録
    Dim A
    Set A = CreateObject("Scripting.Dictionary")
    
    '値を登録する
    A.Add "A", "10"
    A.Add "B", "20"
    A.Add "C", "30"
    A.Add "D", "40"
    A.Add "E", "50"
    
    'アイテムを変更
    A("FFFF") = "9999" '←登録されていないキーだと登録されちゃう
    
    '辞書をループ
    For Each B In A
        '辞書を出力
        Debug.Print B & " " & A(B)
    Next
    
End Sub

実行する前の値です。

実行する前の値

実行してみます。

未登録のキーで検索すると登録されちゃう

新しく登録されてしまいました。

検索してアイテムを変更したいのに、キーとアイテムが登録されちゃってます。

こんな場合は、「キー」が登録されているかを判定して、存在している場合に、アイテムを変更するといいです。

「キー」が登録されているかを判定する

「キー」が登録されているかを判定してみます。

Sub TEST3()
    
    '辞書を登録
    Dim A
    Set A = CreateObject("Scripting.Dictionary")
    
    '値を登録する
    A.Add "A", "10"
    A.Add "B", "20"
    A.Add "C", "30"
    A.Add "D", "40"
    A.Add "E", "50"
    
    '辞書をループ
    For Each B In A
        '辞書を出力
        Debug.Print B & " " & A(B)
    Next
    
    '「キー」が登録されているか確認
    If A.exists("FFFF") = True Then
        'アイテムを変更
        A("FFFF") = "9999" '←登録されていない場合は、変更しない
    End If
    
    '辞書をループ
    For Each B In A
        '辞書を出力
        Debug.Print B & " " & A(B)
    Next
    
End Sub

では、VBAコードを実行してみます。

「キー」が登録されているかを判定する

「"FFFF"」というキーは登録されていないので、そのままの値となりました。

番号でアイテムを変更する

2つの目の方法で、「番号を指定」してアイテムを変更してみます。

ポイントは、キーの値を配列に入力して、配列の値を使って「Dictionary」を検索します。

Sub TEST4()
    
    '辞書を登録
    Dim A
    Set A = CreateObject("Scripting.Dictionary")
    
    '値を登録する
    A.Add "A", "10"
    A.Add "B", "20"
    A.Add "C", "30"
    A.Add "D", "40"
    A.Add "E", "50"
    
    '辞書をループ
    For Each B In A
        '辞書を出力
        Debug.Print B & " " & A(B)
    Next
    
    '辞書のキーを取得
    Dim C
    C = A.keys
    
    '2番目のアイテムを変更(要素は0番目から始まる)
    A(C(2)) = "9999"
    
    '辞書をループ
    For Each B In A
        '辞書を出力
        Debug.Print B & " " & A(B)
    Next
    
End Sub

変更前の値をみてみます。

変更前の値

変更前の値

では、VBAコードを実行した後の値をみてみます。

番号を指定してアイテムを変更

番号を指定してアイテムを変更

「2番目のアイテム」を変更できました。

こんな感じで、キーを配列に入力して配列の値を使えば、「番号を指定」してアイテムを変更できます。

おわりに

この記事では、「Dictionary」の「アイテム」を変更する方法について、ご紹介しました。

「Dictionary」の「アイテム」を変更するには、「キー」で検索して値を入力するとできます。

アイテムを変更する方法は、2つあります。

  • キーで検索して値を入力
  • 番号を指定して値を入力

という感じです。

状況に合わせて、アイテムを変更する方法を使い分けていきましょう。

参考になればと思います。最後までご覧くださいまして、ありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

アーカイブから探す