VBA – サブプロシージャから値を返す

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

masahiro yoshida

Last updated on 5月 30, 2022

このチュートリアルでは、VBAでサブプロシージャから値を返す方法について説明します。

サブプロシージャは、値を返すために設計されているわけではありません。それは関数プロシージャの役割です。しかし、サブプロシージャの中でコードを実行しているときに、そのサブプロシージャから値を取得する必要がある場合があるかもしれません。このような場合、モジュール変数やグローバル変数を使用したり、サブプロシージャを使用してExcelシートに値を入力する方法があります。

値を返すために変数を使用する

モジュールレベルで変数を宣言することができます。そうすることで、モジュール内のどこででも変数を使用することができ、変数もその値を保持します。モジュールレベルで変数を宣言するには、コードモジュールの先頭で変数を宣言します。

Option Explicit
Dim dblQty as Double

Sub TestA()
'TestBサブを呼び出す
   Call TestB
'イミディエイトウィンドウに変数の値を表示
   Debug.Print dblQty
End Sub
Sub TestB()
'モジュール変数に値を入れる
   dblQty = 900
End Sub

これらをまとめると、TestAを実行し、TestBを呼び出して、900という値を即座にウィンドウに表示させることになります。

vba sub module variable

この方法では、モジュールレベルでDim ステートメントを使用して変数が宣言されているため、モジュール内でのみ動作します。

グローバル変数

プロジェクトの全てのモジュールで使用するために、グローバルレベルで変数を宣言することができます。

vba sub global variable

サブプロシージャを使ってExcelシートへ入力する

サブプロシージャから計算された値を参照するもう一つの方法は、単純にデータをExcelシートに書き込んで、そのデータを別のプロシージャで参照することです。

Sub PopulateRange()
   Range("A1") = "商品"
   Range("B1") = "数量"
   Range("C1") = "コスト"
End Sub

そして、セルの値を参照することで、別のプロシージャでその値を参照することができます。

Sub RetrieveRange()
   Dim Product as String, Quant as Long, Cost as Double   

   Product = Range("A1")
   Quant = Range("B1")
   Cost = Range("C1")
End Sub
vba-free-addin

VBA Code Examples Add-in

Easily access all of the code examples found on our site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(No installation required!)

Free Download

Return to VBA Code Examples