Excel Dictionaryオブジェクト(連想配列)のキーと値(通貨型)をセルに代入する場合の型

Excel Dictionaryオブジェクト(連想配列)のキーと値(通貨型)を
セルに代入する場合、処理を速く終えるため、連想配列をセル範囲に
一括で代入したいと思っています。
しかし、連想配列から一括で値をセットする場合、
通貨型が文字列として出力され、文字列から数値への変更処理(※)が
必要になります。

※の処理を不要にする、もしくは列を範囲として一度で文字列から
通貨に処理をする方法はないでしょうか。
・一つづつ値をセルに代入する→B列は通貨
・一つづつ値を配列にセットし、配列をセル範囲に代入する→B列は通貨
方法では、B列は通貨になりました。

VBA

1Sub dicPaste() 2 Dim dic As Variant 3 Set dic = CreateObject("Scripting.Dictionary") 4 dic.Add "A0001", CCur(500) 5 dic.Add "A0002", CCur(300) 6 dic.Add "A0003", CCur(400) 7 dic.Add "A0004", CCur(500) 8 dic.Add "A0005", CCur(300) 9 dic.Add "A0006", CCur(400) 10 11 Dim key As Variant 12 Dim i As Long 13 i = 1 14 15' ' 一つづつ値をセルに代入する→B列は通貨 16' For Each key In dic.keys 17' Sheet1.Cells(i, 1) = key 18' Sheet1.Cells(i, 2) = dic(key) 19' i = i + 1 20' Next 21 22' ' 一つづつ値を配列にセットし、配列をセル範囲に代入する→B列は通貨 23' Dim myarray 24' ReDim myarray(1 To dic.Count, 1 To 2) As Variant 25' For Each key In dic.keys 26' myarray(i, 1) = key 27' myarray(i, 2) = dic(key) 28' i = i + 1 29' Next 30' Sheet1.Range("A1:B" & dic.Count).Value = myarray 31 32 ' 一括で値をセットする→B列は文字列 33 Sheet1.Cells(1, 1).Resize(dic.Count, 1).Value = Application.Transpose(dic.keys) 34 Sheet1.Cells(1, 2).Resize(dic.Count, 1).Value = Application.Transpose(dic.Items) 35' ' 文字列から数値への変更処理が必要 36' For i = 1 To dic.Count 37' Sheet1.Cells(i, 2).Value = CCur(Sheet1.Cells(i, 2).Value) 38' Next i 39 40End Sub

コメントを投稿

0 コメント