VBAトレーニング-便利帳02

VBAトレーニング-便利帳02- [関数操作のまとめ]

 関数の操作に関して、よく使用する記述をまとめてみました。(これらは「VBAトレーニング」の中でも紹介しています)

関連記事

このページで学習出来る事  前回まではブックやシートオブジェクトの操作に関して解説をしてきましたが、6回目となる今回は、VBAの関数操作に関して説明をしていきます。  一般的にコードは書けば書くほど行数が長くなっていきますが、プロ[…]

vba-training-06-アイキャッチ

目次

・基本的な関数の作り方

・関数に値を渡す場合のやり方(値渡し)

・関数に値を渡す場合のやり方(参照渡し)

・配列の受け渡し

・オブジェクトの受け渡し


基本的な関数の作り方

  基本的な関数の作り方です。

Sub main()
    Call fncTest01
Call fncTest02 End Sub Private Sub fncTest01() End Sub

Public Sub fncTest02() End Sub

コードの解説

‘関数を呼び出すだけであれば、[Call]を付けて呼び出す。
Call fncTest01
Call fncTest02

‘モジュール内だけで使用する場合は関数に[Private]を付けて宣言する。
Private Sub fncTest01()

‘別モジュールからも使用したい場合は[Public]を付けて宣言する。
Public Sub fncTest02()

  


関数に値を渡す場合のやり方(値渡し)

 「値渡し」にて、関数に値を渡す場合の記述方法です。

Sub main()
    Call fncTest01("abc","123")
End Sub

Private Sub fncTest01(ByVal str As String, ByVal num As Integer)
End Sub

コードの解説

‘関数に値を渡す場合、関数名の後に渡したい値や変数を記入する。
‘複数ある場合は[,]で区切る。
Call fncTest01(“abc”,”123″)

‘受け取る側の関数には、受け入れるための変数とその型を用意しておく。
Private Sub fncTest01(ByVal str As String, ByVal num As Integer)

値渡しの場合、受け側の関数には[ByVal]にて変数を宣言します。

  


関数に値を渡す場合のやり方(参照渡し)

 「参照渡し」にて、関数に値を渡す場合の記述方法です。

Sub main()
    Dim str As String
    Dim num As Integer
    
    str = "abc"
    num = "123"
    Call fncTest01(str, num)
End Sub

Private Sub fncTest01(ByRef str As String, ByRef num As Integer)
End Sub

コードの解説

‘参照渡しにて値を関数へ渡す場合は、対象の変数を宣言しそれを指定する必要があります。
Call fncTest01(str, num)

‘受け取る側の関数には、受け入れるための変数とその型を用意しておく。
Private Sub fncTest01(ByRef str As String, ByRef num As Integer)

参照渡しの場合、受け側の関数には[ByRef]にて変数を宣言します。

  


配列の受け渡し

 配列を受け渡しする場合の記述方法です。

Sub main()
    Dim buf(1) As Integer

    buf(0) = 100
    buf(1) = 200

    Call fncTest01(buf)
    Call fncTest02(buf)
End Sub

Private Sub fncTest01(ByVal buf)
End Sub

Private Sub fncTest01(ByRef buf)
    buf(0) = 1000
    buf(1) = 2000
End Sub

コードの解説

‘受け取った配列を、関数内で更新しない場合は[ByVal]にて配列を受け取ります。
Private Sub fncTest01(ByVal buf)

‘受け取った配列を、関数内で更新する場合は[ByRef]にて配列を受け取ります。
Private Sub fncTest01(ByRef buf)
  buf(0) = 1000
  buf(1) = 2000
End Sub

ExcelVBAの場合、[Variant]型を除いて通常の配列は、値を返すことが出来ません。
配列を更新する場合は[ByRef]にて受け取る必要があります。

[Function]にて配列の受け渡しを行う場合は[Variant]型を指定しすれば、通常の変数と同じようにやり取りが行えます。

  


オブジェクトの受け渡し

 オブジェクト(クラス)を受け渡しする場合の記述方法です。

Sub main()
    Dim objStr As Object
    
    Call fncTest01(objStr)
    Set objStr = fncTest02(objStr)
End Sub

Private Sub fncTest01(ByRef objStr As Object)
End Sub

Private Function fncTest02(ByRef objStr As Object) As Object
    Set fncTest02 = objStr
End Function

コードの解説

‘オブジェクト型(クラス)を受け取る場合、その型を関数に指定することで値を受け取ることが出来ます。
Private Sub fncTest01(ByRef objStr As Object)

‘オブジェクト型(クラス)の返り値を受け取る場合、変数の前に[Set]を記述する必要があります。
Set objStr = fncTest02(objStr)

‘オブジェクト型(クラス)の値を返す場合、関数名の前に[Set]を記述する必要があります。
Private Function fncTest02(ByRef objStr As Object) As Object
  Set fncTest02 = objStr
End Function

[CreateObject]や[New]で作成した変数も、同様に関数でやり取りする場合は[Set]を付けてあげる必要があります。

  

前回-関連記事

 エクセルブックの操作に関して、よく使用する記述をまとめてみました。(これらは「VBAトレーニング」の中でも紹介しています) [sitecard subtitle=関連記事 url=https://www.taru-net.jp/tec/[…]

VBAトレーニング-便利帳01-[ブック操作関係のまとめ]