Hey guys, what's up?
(みんな、元気にしてる~?)
Let's have fun learning VBA today too!
(今日も VBA を楽しんで勉強しましょ~!)
え? なんでいきなり英語なのかって?
なんとなく。ノリがいいから。それでは、始めましょ~。
配列要素を逆順に並べ替えます
今回は 受け取った配列を逆順に並べ替える Revers関数 を作ってみます。
つまり配列変数 x(i) に
a, b, c, d, e
と並んでいる要素を
e, d, c, b, a
と並べ直した配列 y(i) を作って返す関数です。こういうのは VBA にはもともと用意されてないので、モジュールにストックしておくと色々な場面で重宝しますよ。配列受け渡し なので、宣言セクションに Option Base 1 の記述を忘れないでください。「配列受け渡しは、とにかく Option Base 1」と覚えてしまいましょう。
Option Base 1
Function REVERSE(x() As Variant) As Variant
Dim n As Long, k As Long
Dim ub As Long
Dim y() As Variant
'x のインデックス番号の上限値を取得します
ub = UBound(x)
'y の要素数を x に揃えます
ReDim y(ub)
For k = 1 To ub
y(k) = x(ub - k + 1)
Next k
REVERSE = y()
End Function
次のサンプルコードでは REVERSE関数に (1, 2, 3) という配列を渡して、(3, 2, 1) を受けとります。
Sub TestReverse()
Dim z As Variant
Dim a(3) As Variant
Dim j As Long
a(1) = 1
a(2) = 2
a(3) = 3
z = REVERSE(a())
For j = 1 To 3
Debug.Print z(j);
Next j
End Sub
このプログラムを実行すると、イミディエイトウィンドウに
が表示されます。REVERSE関数をワークシートで呼びだすときは、横に並んだセルを3つ選択した状態で、
と入力して、[Ctrl] + [Shift] + [Enter] を押してください。
≫ メニューに戻って他の記事も読んでね~♪