VBAによるswap関数(2つの変数の値を交換)のサンプルコードを紹介します。
SWAP関数とは
SWAP関数とは「二つの変数の値を入れ替える」基本的な関数です。
ソートアルゴリズムを学ぶ際に、SWAP関数は必ず必要な知識になります。
ここではVBAで、2ステップに分けてSWAP関数を作成していきます。
- 二つの変数の値を入れ替えるコードを作成する
- 上記のコードをSWAP関数化する
二つの変数の値の入れ替え
まずはシンプルに2つの変数の値を入れ替えます。
関数化は後で実施します。
ソースコード
ThisWorkbookの下にソースコードを記述しました。
swap1.xlsm
Option Explicit
Sub main()
Dim dataA As String
Dim dataB As String
Dim temp As String
dataA = "AAAA"
dataB = "BBBB"
MsgBox "実行前:" & Chr(13) + Chr(10) & dataA & "," & dataB
temp = dataA
dataA = dataB
dataB = temp
MsgBox "実行後:" & Chr(13) + Chr(10) & dataA & "," & dataB
End Sub
ソースコードは、以下の内容を記述しています。
- 変数の値をメッセージボックスで表示
- 二つの変数の値を入れ替える
- 変数の値をメッセージボックスで表示
※Chr(13) + Chr(10)の部分は改行です。
実行
実行ボタンから、main関数を実行してみます。
すると、swapの前後で変数の値が入れ替わっていることが確認できます。
メッセージボックス(swap実行前)
メッセージボックス(swap実行後)
SWAP関数化
次に上記のコードを関数化していきます。
これは参照渡しで実装します。
値渡しで実装してしまうと、swapの戻り値の実装がややこしいです。
(参照渡しだと戻す必要がない)
ソースコード
swap2.xlsm
Option Explicit
Private Function swap(ByRef data1 As String, ByRef data2 As String)
Dim temp As String
temp = data1
data1 = data2
data2 = temp
End Function
Sub main()
Dim dataA As String
Dim dataB As String
dataA = "AAAA"
dataB = "BBBB"
MsgBox "実行前:" & Chr(13) + Chr(10) & dataA & "," & dataB
Call swap(dataA, dataB)
MsgBox "実行後:" & Chr(13) + Chr(10) & dataA & "," & dataB
End Sub
実行
実行ボタンから、main関数を実行してみます。
すると、swap関数の前後で値が入れ替わっていることが確認できます。
メッセージボックス(swap実行前)
メッセージボックス(swap実行後)
参考情報
環境
下記の環境で作成・実行しております。
No. | 環境 | バージョン |
---|---|---|
1 | OS | Windows11 |
2 | Excel | Excel2016 |
以上です。