二次元配列内の指定した列(横方向の要素)に空白列を追加したい場合があります。
今回の記事は特定の〇番目の指定列を列追加するコードを説明します。
二次元配列で〇番目の指定列に空白列を追加するサンプルコード
以下の手順で要素を詰めて上書きするイメージです。
①既存配列の列数+1でtmpを定義
②配列を〇番目の要素が来たら、その列は空白列として追加、それ以降は一つ前の要素を書込みする。
'■二次元配列に空白列を追加 Public Function call_Array2D_AddColumn(tmp1 As Variant, num As Long) Dim tmp2 As Variant '■元の配列(tmp1)より列を一つ大きく定義する ReDim tmp2(UBound(tmp1, 1), UBound(tmp1, 2) + 1) Dim flg As Long: flg = 0 Dim r As Long Dim c As Long For c = LBound(tmp1, 2) To UBound(tmp1, 2) + 1 '■num(追加したい列番号)が一致すれば空白で列を書き込み ' それ以降は一つ前の列を書き込みする If c = num Then For r = LBound(tmp1, 1) To UBound(tmp1, 1) tmp2(r, c) = "" Next flg = 1 Else For r = LBound(tmp1, 1) To UBound(tmp1, 1) tmp2(r, c) = tmp1(r, c - flg) Next End If Next call_Array2D_AddColumn = tmp2 End Function
実際の使い方は以下のように使用します。
Public Sub test() Dim data() As Variant ReDim data(2, 2) data(0, 0) = 1 data(0, 1) = "あ" data(0, 2) = "A" '1 あ A data(1, 0) = 2 data(1, 1) = "い" '2 い B data(1, 2) = "B" data(2, 0) = 3 '3 う C data(2, 1) = "う" data(2, 2) = "C" '■1を指定したのでの2番目「0、1」の2番目に列を追加 data = call_Array2D_AddColumn(Data, 1) '1 あ A '2 い B '3 う C '↓↓↓ '1 "" あ A '2 "" い B '3 "" う C '「1」と「あ」の間に空白列が追加される End Sub
コメント