Sub関数プロシージャ [VB]

VB2012-2017

戻り値のない関数

Sub プロシージャ関数は、Function プロシージャと異なり、戻り値がありません。

Sub プロシージャは、Sub ステートメントを使って次のような形式で記述します。

  Public Sub 関数名(ByVal 引数名 As データ型)
      .................
      ..............
      .................
  End Sub
  Public Sub 関数名()
      .................
      ..............
      .................
  End Sub

戻り値があるときは、Function プロシージャ を使います。

Sub 構文

Public Sub と始めるのが普通です。Function プロシージャ同様に、Public を書くと覚えてください。Public のことをアクセス修飾子と言いますが、Public 以外の修飾子は、「やさしいVB文法」では使いません。

難しいですが、修飾子の詳細はこちらです。 → アクセス修飾子

関数名

関数名は先頭文字を英字にすれば、自由に命名することができますが、普通は先頭文字を英字大文字にして、処理内容が分かる名称を付けます。

  Public Sub 関数名
引数

何度でも再利用するためには、様々な値を使えるようにする必要があります。その仕組みとして引数があります。これもFunction プロシージャと同様です。

ByVal を引数名の前に付けることで、本体プログラムの変数とは別にコピーされた値が、Sub 関数に渡されます。

引数はいくつでも指定でき、ひとつも指定しなくても大丈夫です。

  関数名(ByVal 引数1 As データ型, ByVal 引数2 As データ型, ....)

引数の無い場合には、次のような形式になります。

  関数名()

Public Sub サンプル

商品の価格から税込価格を計算し、税込価格を表示する関数を使ったプログラムを作成します。

ソースリストの枠内をクリックすると全選択できます。

Module Module1

    Sub Main()
        ' 変数の宣言
        Dim inStr As String
        Dim nedan As Integer = 0

        Console.WriteLine("/ 税込価格を計算するプログラム /")
        ' キーボードから商品価格を入力して、税込価格を求める
        Do
            Console.WriteLine()    ' 改行
            Console.WriteLine("* 商品価格を入力してください *")
            ' キーボードから入力
            inStr = Console.ReadLine()
            ' 入力した文字列を整数に変換
            nedan = Integer.Parse(inStr)
            If nedan > 0 Then
                ' 税込価格を関数を使って計算
                CalucZeikomi(nedan)
            Else
                ' 入力値が0以下なら入力を終了してLoopを抜ける
                Console.WriteLine("プログラム終了")
                Exit Do
            End If
        Loop
    End Sub

    '*************************************
    ' 機能:税込価格を計算して表示する関数
    ' 引数:商品価格
    ' 戻値:なし
    '******1*********2*********3*********4
    Public Sub CalucZeikomi(ByVal kakaku As Integer)
        Dim zeikomi As Double = 0

        ' 税込価格を計算
        zeikomi = kakaku * 1.05
        ' 税込価格を表示
        Console.WriteLine()              ' 改行
        Console.WriteLine("税込価格は")
        Console.WriteLine(zeikomi & "円です")
    End Sub

End Module

【注意】Sub Main()プロシージャも、SubEnd Sub の形をしていますが、Main()はプログラムの開始点を示す特殊なプロシージャです。