大体でIT

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

大体でIT

Excel VBAで、「Dictionary」の「キー」を変更する方法について、ご紹介します。「キー」を変更するには、「.Key」を使います。やり方は、キーを検索する方法と、キーの番号を指定する方法があります。

はじめに

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

「キー」を変更するには、「.Key」を使います。

変更するやり方は、2つあります。

  • キーを検索して変更
  • キーの番号を指定して変更

という感じです。

キーを検索する場合は、「.Exists」で存在を確認した後に変更すると、エラーを回避できます。

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

この記事で紹介すること

  • 「Dictionary」の「キー」を変更する方法

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

目次

VBAコードまとめ

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

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

'辞書のキーを変更
A.Key("C") = "CCCC"

'番号を指定してキーを変更
Dim C
C = A.keys 'キーを取得
A.Key(C(2)) = "CCCC" '辞書のキーを変更

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

Dictionaryに登録したキーの値を変更する

Dictionaryに登録した「キー」の値を変更してみます。

「Key」を使って値を変更する

「Key」を使って値を変更してみます。

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.Key("C") = "CCCC"
    
    '辞書をループ
    For Each B In A
        '辞書を出力
        Debug.Print B & " " & A(B)
    Next
    
End Sub

変更する前の「Dictionary」の値をみてみます。

変更する前

変更する前

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

「キー」を変更

「キー」を変更

「"C"」を「"CCCC"」に変更することができました。

キーの番号を使って変更する

「キーの番号」を使って変更してみます。

やり方は、キーの値を配列に入力して、配列の値を使って変更するという方法です。

先ほどと同じように「.Key」を使います。

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"
    
    '辞書をループ
    For Each B In A
        '辞書を出力
        Debug.Print B & " " & A(B)
    Next
    
    '辞書のキーを取得
    Dim C
    C = A.keys
    
    '辞書のキーを変更
    A.Key(C(2)) = "CCCC"
    
    '辞書をループ
    For Each B In A
        '辞書を出力
        Debug.Print B & " " & A(B)
    Next
    
End Sub

変更する前の「Dictionary」の値です。

変更する前

変更する前

VBAコードを実行した後の「Dictionary」の値です。

番号を指定して「キー」を変更

番号を指定して「キー」を変更

番号を指定して「キー」を変更できました。

キーが登録されているかを確認してから変更する

キーが登録されているかを確認してから変更する、というのをやってみます。

登録されていないキーで検索するとエラー

キーを検索して変更する方法だと、登録されていないキーで検索した場合に、エラーとなってしまいます。

ちょっとやってみます。

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
    
    '辞書のキーを変更
    A.Key("FFFF") = "CCCC" '←登録されていないキーだとエラー
    
    '辞書をループ
    For Each B In A
        '辞書を出力
        Debug.Print B & " " & A(B)
    Next
    
End Sub

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

登録されていない「キー」だとエラー

登録されていない「キー」だとエラー
登録されていない「キー」だとエラー

登録されていない「キー」で検索してしまうとエラーとなってしまいました。

「Exists」を使う

キーで検索して変更する場合は、「Exists」を使って、存在を確認したあとに変更するといいです。

間違って「"FFFF"」で検索してみます。

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
    
    '「キー」が登録されているか確認
    If A.exists("FFFF") = True Then
        'キーを変更
        A.Key("FFFF") = "CCCC"
    End If
    
    '辞書をループ
    For Each B In A
        '辞書を出力
        Debug.Print B & " " & A(B)
    Next
    
End Sub

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

存在を確認して「キー」を変更

存在を確認して「キー」を変更

こんな感じで、存在を確認して「キー」を変更すると、エラー回避になります。

検索したキー「"FFFF"」がないので、そのままの値となっています。

おわりに

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

「キー」を変更するには、「.Key」を使います。

変更するやり方は、2つあります。

  • キーを検索して変更
  • キーの番号を指定して変更

という感じです。

キーを検索する場合は、「.Exists」で存在を確認した後に変更すると、エラーを回避できます。

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

関連する記事から探す

カテゴリから探す

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

アーカイブから探す