VBAによるswap関数(2つの変数の値を交換)のサンプルコード

VBA
記事内に広告が含まれています。

VBAによるswap関数(2つの変数の値を交換)のサンプルコードを紹介します。

SWAP関数とは

SWAP関数とは「二つの変数の値を入れ替える」基本的な関数です。

ソートアルゴリズムを学ぶ際に、SWAP関数は必ず必要な知識になります。

ここではVBAで、2ステップに分けてSWAP関数を作成していきます。

  1. 二つの変数の値を入れ替えるコードを作成する
  2. 上記のコードを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

ソースコードは、以下の内容を記述しています。

  1. 変数の値をメッセージボックスで表示
  2. 二つの変数の値を入れ替える
  3. 変数の値をメッセージボックスで表示

※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.環境バージョン
1OSWindows11
2ExcelExcel2016
環境一覧

以上です。