Excel VBAエキスパート資格・ベーシック解説|sub 呼び出しCall

 

Excel VBAエキスパート資格・ベーシック試験対策の問題集に出題している「sub 呼び出しCall」の解説ページです。

 

ExcelVBAのsub 呼び出しCallステートメントは、料理レシピの手順のように各手順ごとに分けて管理するのと同じ。

 

プログラムをひとつのプロシージャで記述するのではなく、手順を分けて呼び出して使用する方法です。サンプルコードをもとに具体的に解説します。

Excel VBA sub 呼び出しCallステートメントとは

プロシージャから(Subプロシージャ、Functionプロシージャ)を呼び出すときに使います。

料理に例える

料理をするとき、レシピブックには様々な手順が記されていますね。

例えば、フレンチトーストの作り方。

このレシピには、パンを切り、卵液に浸す、焼く、などの手順が書かれています。

ここで、料理のCallステートメントは、レシピブックの特定の手順を呼び出すときの手法のようなものです。

つまり、必要な手順を読み取り、それを実際に実行する方法なのです。

ExcelVBAのプログラムでも、一連の手順(マクロや関数)を個別に書くのではなく、Callステートメントを使って特定の手順を呼び出せます。

これにより、手順の効率的な利用やプログラム全体の整理が可能となります。

 

Excel VBA sub 呼び出しCallステートメントの使い方

例えば、フレンチトーストのレシピには次の手順があります。

1. パンを切る
2. 卵液に浸す
3. 焼く

これをExcelVBAのプログラムとして表現すると、以下のようになります。

 

Sub MakeFrenchToast()
    ' レシピの手順を呼び出す
    Call CutBread
    Call DipInEgg
    Call Cook
End Sub

Sub CutBread()
    ' パンを切る手順
    MsgBox "パンを切ります"
End Sub

Sub DipInEgg()
    ' 卵液に浸す手順
    MsgBox "パンを卵液に浸します"
End Sub

Sub Cook()
    ' 焼く手順
    MsgBox "パンを焼きます"
End Sub

 

この例では、`MakeFrenchToast`というメインのプロシージャ(料理全体の手順)があります。

 

そして、`CutBread`、`DipInEgg`、`Cook` というサブプロシージャ(個々の手順)をCallステートメントを使って呼び出しています。これにより、各手順を個別に記述し、効率的に再利用することができます。

 

Callステートメントを使って特定の手順を呼び出すことで、プログラム全体が整理され、修正や管理が簡単になります。

Excel VBA sub 呼び出しCallステートメントの使い所や利点

 

サブルーチンや関数の呼び出し

例えば、同じコードを複数の箇所で使用する場合、そのコードを共通化してCallステートメントを使って呼び出すことができます。これにより、同じ処理を何度も書く手間を省くことができます。

 

Sub MainCode()
    ' メインのコード
    Call CommonCode   ' 共通のコードを呼び出す
    ' メインのコードの続き
End Sub

Sub CommonCode()
    ' 共通のコード
    ' 何らかの処理
End Sub

 

コードの可読性と保守性の向上

Callステートメントを使うことで、コードが読みやすくなります。メインの処理部分が長くなるのを避け、プログラム全体の可読性を向上させます。また、修正やメンテナンスがしやすくなります。

 

Sub Calculate()
    ' 計算を行うサブルーチン
    Call CheckInputs   ' 入力を確認する
    Call PerformCalculation   ' 計算を実行する
    ' その他の処理
End Sub

Sub CheckInputs()
    ' 入力値をチェックする処理
End Sub

Sub PerformCalculation()
    ' 計算を実行する処理
End Sub

 

Callステートメントを使うことで、コードの重複を避け、プログラムをより効率的かつ読みやすく保守しやすくできます。

 

Excel VBA sub 呼び出しCallステートメントの注意点

 

ネストされた呼び出し

多くのCallステートメントをネストすることは、可読性を損なう可能性があります。特に深い階層のネストは、コードの把握や保守を難しくします。できるだけ浅い階層で分割することが好ましいです。

 

' ネストされた呼び出しの例
Sub MainProcedure()
    ' 主要なプロシージャ
    Call SubProcedure1
End Sub

Sub SubProcedure1()
    ' サブプロシージャ1
    Call SubProcedure2
End Sub

Sub SubProcedure2()
    ' サブプロシージャ2
    ' ...
End Sub

 

Excel VBA Callステートメントの応用例

複数の引数を受け取るサブルーチンや関数

 

Sub CalculateAndDisplayResult()
    Dim input1 As Integer
    Dim input2 As Integer
    input1 = 10
    input2 = 20
    
    ' サブルーチンを呼び出して計算結果を表示
    Call DisplayResult(Add(input1, input2))
End Sub

Function Add(a As Integer, b As Integer) As Integer
    ' 2つの数値を足す関数
    Add = a + b
End Function

Sub DisplayResult(result As Integer)
    ' 結果を表示するサブルーチン
    MsgBox "計算結果は " & result & " です。"
End Sub

 

sub 呼び出しCall|記憶定着問題集

記憶定着問題集

操作方法:1.●●●をクリック(スマホはタップ)で答え表示。2.答えをクリック(スマホはタップ)で●●●表示。1⇔2を繰り返すことで、記憶を定着できます。

Call(コール)ステートメントとは、●●●から(Subプロシージャ、Functionプロシージャ)を●●●ときに使います。

同じコードを複数の箇所で使用する場合、そのコードを●●●して●●●ステートメントを使って呼び出すことができます。これにより、同じ処理を何度も書く手間を省くことができます。

 

コメントの入れ方

コメントはコード内に追加されるテキストで、他の人や自分自身がコードを読みやすく理解しやすくするためのものです。コードが何をしているのか、なぜそれを行っているのかを説明する役割があります。

 

' この変数はユーザーの名前を保持します
Dim userName As String

' ユーザー名を取得するための入力ボックスを表示します
userName = InputBox("あなたの名前を入力してください:")

 

このようにコメントを追加することで、後で同じコードを見直すときや他の人があなたのコードを読んだり修正したりするときに、何を意図していたのか理解しやすくなります。コメントはコードの読みやすさや保守性を高めるのに役立ちます。

 

1行の記述が長くなった時に使う行継続文字

Excel VBAでは、1行のコードが長くなりすぎる場合、行継続文字を使用してコードを次の行に継続させることができます。行継続文字はアンダースコア(`_`)です。

 

' 行継続文字を使ったコードの例
Dim longText As String
longText = "1行が長くなったコードを行継続文字は " & _
            "スペースとアンダースコアで可能です"

 

行継続文字を使用する際の注意点

1.行継続文字は行の最後に置きます。行の途中にスペースや文字を置くとエラーが生じることがあります。

2.行継続文字を使うときは、次の行をインデントするとコードの構造がわかりやすくなります。

3.文字列や式の途中で行継続文字を使うことができます。ただし、コメントやリテラル文字列("文字列"など)の中で使うことはできません。

 

記憶定着問題集

操作方法:1.●●●をクリック(スマホはタップ)で答え表示。2.答えをクリック(スマホはタップ)で●●●表示。1⇔2を繰り返すことで、記憶を定着できます。

Excel VBAでは、1行のコードが長くなりすぎる場合、行継続文字を使用してコードを次の行に継続させることができます。行継続文字は●●●です。

文字列や式の途中で行継続文字を使うことができます。ただし、●●●の中で使うことはできません。

 

Excel VBAのスキルを身につけて、仕事の効率化に貢献しませんか?

当サイトでは、Excel VBAエキスパート認定資格取得に向けた情報を提供しています。興味がある方は、ぜひ以下の問題集からチャレンジしてみてください。

 

ExcelVBAエキスパートベーシックは、業務効率をあげるためにExcelVBAを利用する人が対象の問題集です。