VBA入門② No.4 サブプロシージャとファンクションプロシージャ

  • プロシージャはプログラムをまとめて、整理・再利用するための処理単位なんだ
  • サブプロシージャとファンクションプロシージャの2種類の方法があるから、違いを説明するよ
  • サブプロシージャは引数を受け取ることはできるけど、戻り値がない(一方通行)
  • ファンクションプロシージャは、引数を受け取ることもできるし、戻り値がある
  • ようするに、サブプロシージャにはreturn(javascript)が無くて、ファンクションプロシージャーにはあるんだ!

サブプロシージャ

  • サブプロシージャの場合は、値を渡すだけ
  • 変数(myHello)に変化はありませんので、アラート(Hello)が表示されます
Option Explicit
'呼び出し元のプロシージャ
Sub myMain()
Dim myHello As String
myHello = "Hello"

myAlert myHello 'サブプロシージャを呼び出す

MsgBox myHello
End Sub

'呼び出される側のプロシージャ
Sub myAlert(ByVal myHello As String)

myHello = myHello & " World"

End Sub

ファンクションプロシージャ

  • ファンクションプロシージャは、値を渡して実行した内容を、戻り値として変数に返しています
  • 下記の場合、ファンクションプロシージャの処理が変数(myHello)に戻り値として返るので、アラート(Hello World!!)が表示されます
Option Explicit
'呼び出し元のプロシージャ
Sub myMain()

Dim myHello As String
myHello = "Hello"

myHello = myAlert(myHello) 'ファンクションプロシージャを呼び出す

MsgBox myHello
End Sub

'呼び出される側のプロシージャ
Function myAlert(ByVal myHello As String)

myHello = myHello & " World!!"
myAlert = myHello

End Function