前提・実現したいこと
vbaの辞書内の配列の値を変更したい。
発生している問題・エラーメッセージ
非配列の場合は、変更が行えましたが、
配列になると、値を代入しても値が更新されていませんでした。
該当のソースコード
Sheet1のA1~C10を読み取る、A1には「test1」という値が入っています。
範囲の読み込みは成功・・・範囲の値変更に失敗
単一の読み込みは成功・・・単一の値変更に成功
という流れになっています。
vba
1Dim dic As Object 2Set dic = CreateObject("Scripting.Dictionary") 3dic.Add "範囲", ThisWorkbook.Worksheets("Sheet1").Range("A1:C10").value 4Debug.Print dic.Item("範囲")(1, 1) 5' >>> test1 6dic.Item("範囲")(1, 1) = "test2" 7Debug.Print dic.Item("範囲")(1, 1) 8' >>> test1 9 10dic.Add "単一", "test1" 11Debug.Print dic.Item("単一") 12' >>> test1 13dic.Item("単一") = "test2" 14Debug.Print dic.Item("単一") 15' >>> test2
試したこと
辞書に代入するのではなく、Variant型で用意したものに配列を入れると、
問題なく値の変更が行えました
vba
1Dim hoge As Variant 2hoge = ThisWorkbook.Worksheets("setting").Range("A1:C10").value 3Debug.Print hoge(1, 1) 4hoge(1, 1) = "test2" 5Debug.Print hoge(1, 1)
配列が変更できない理由、またこの辞書内配列を変更する方法をご教示願いたく存じます。
補足情報
Excel2013
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/17 02:28