こんにちは!
今回は、VB(Visual Basic)を始めたばかりの方向けに、「Sub」と「Function」の違いについて、分かりやすく解説してみたいと思います。
「プロシージャって何?」「SubとFunctionってどう使い分けるの?」というモヤモヤをスッキリさせたい方は、ぜひ最後まで読んでみてください。
よく聞く「SubとFunctionの違い」ってなんなの?
VBを触っていると、だいたいこんな場面に出くわします。
Public Sub Hello() MsgBox("こんにちは!") End Sub Public Function Add(a As Integer, b As Integer) As Integer Return a + b End Function
このふたつ、どっちも「何かの処理」をするという点では似ていますが、大きな違いがあるんです。
Subってなに?
Subは「手続き(プロシージャ)」の一種で、値を返さないのが特徴です。
ざっくり言うと:
- 処理はするけど、結果は返さない
- メッセージの表示や、ログの記録、ファイルの書き込みなどに使います
具体例:
Public Sub DisplayMessage(message As String) MsgBox message End Sub
このSubは、ただ渡された文字列をメッセージボックスで表示するだけ。
「はい、やりましたー!」って感じで、結果は何も返ってきません。
Functionってなに?
Functionは、値を返すプロシージャです。
ざっくり言うと:
- 計算とかの結果を返したいときに使う
- 戻り値を活用できる
具体例:
Public Function AddNumbers(ByVal a As Integer, ByVal b As Integer) As Integer AddNumbers = a + b End Function
これは足し算して結果を返してくれるFunction。Dim result = AddNumbers(10, 20)
って呼び出せば、result
には「30」が入ります。
戻り値の書き方には2パターンある
VBでは戻り値の書き方が2つあります。
① Return
を使う(おすすめ!)
Return a + b
他の言語でもよく使われるスタイルで、読みやすいです。
② 関数名に値を代入する
AddNumbers = a + b
VBの昔ながらの書き方。こちらも使えますが、最近では Return
の方が主流です。
まとめると?
用途 | 戻り値 | 主な使い道 |
---|---|---|
Sub | 返さない | メッセージ表示、ファイル書き込みなど「処理だけしたいとき」 |
Function | 返す | 計算、判定、データ変換など「処理結果が必要なとき」 |
クラスで使うSubとFunction
もちろん、SubとFunctionはクラスの中にも書けます。
こんな感じ:
Public Class MathOperations Public Sub ShowMessage(message As String) MsgBox message End Sub Public Function Multiply(x As Integer, y As Integer) As Integer Return x * y End Function End Class
呼び出しはこうなります:
Dim ops As New MathOperations() ops.ShowMessage("こんにちは!") Dim product = ops.Multiply(3, 5) MsgBox "答えは " & product
静的(Shared)なSubとFunctionもある
インスタンスを作らなくても呼べる「静的メソッド」は、Shared
を使って書きます。
Public Class Util Public Shared Sub Greet(name As String) MsgBox "Hello, " & name End Sub Public Shared Function Square(x As Integer) As Integer Return x * x End Function End Class
使うときはこう:
Util.Greet("Taro") Dim result = Util.Square(6) MsgBox result '→ 36
よくある疑問:「Subで書くべきか?Functionで書くべきか?」
これはズバリ、「戻り値が必要かどうか」で決めるのが基本です。
- 結果を返す必要がある → Function
- 処理だけでいい → Sub
もし迷ったら、「このメソッド、値を返したい?」と自分に聞いてみてください。
というわけで
SubとFunctionの違い、少しはスッキリしましたか?
最初はただのキーワードにしか見えませんが、実際にコードを書いていくと「お、ここはFunctionにした方がいいな」と自然に分かってくるようになります。
焦らず、少しずつ慣れていきましょう。
何か分からないことがあったら、また気軽に聞いてくださいね!