[VBA] 円柱の表面積と体積を求める関数

[VB-05] 円柱の表面積と体積を返す関数

(1) 底面半径 r と高さ h を渡すと 円柱の表面積と体積 を返す Functionプロシージャ(ユーザー定義関数)を作ってください。関数名は Cylinder とします。

(2) Cylinder関数を使って、底面の半径が 15, 高さが 80 の円柱の表面積と体積を求めてください。
 

VB-05 のヒント(ユーザー定義型変数を定義します)

・底面半径 $r$, 高さ $h$ の円柱の表面積 $S$ と体積 $V$ は次式で与えられます。
 
\[\begin{align*}&S=2\pi(r^2+rh)\\[6pt]
&V=\pi r^2 h\end{align*}\]
・円周率の値が必要です。定数 3.141592654 ... を定義してもいいですし、他にも 逆正接関数を使った方法 があります。

・Cylinder関数は 2 つの値を返さなくてはなりません。複数のデータをまとめて扱うときにはユーザー定義型変数(構造体)を用います。構造体については Excel VBA 言葉の工房あとりえこばと というサイトに詳しい説明があるので参照してください。
 

VB-05 の解答

(1) コードの概要は以下のようになります。

[1] Cylinder関数は表面積と体積の 2 種類の値を返すので、宣言セクションで Type ステートメントを使ってユーザー定義型変数を宣言しておきます。解答コードでは、Solid 型という名前で宣言し、表面積と体積を格納する変数はそれぞれ sarea, volume という名前にしています。

[2] Cylinder関数の戻り値を Solid 型にします。

[3] 円周率を定義します。
  解答コードでは 4 * Atn(1) で定義しています。

[4] Cylinder関数の sarea変数に表面積を入れるようにします。

[5] Cylinder関数の volume変数に体積を入れるようにします。
 
VB-05 の解答コード

'Solid Figure (立体図形) の変数

Type Solid

 '表面積を格納する変数
 sarea As Double

 '体積を格納する変数
 volume As Double

End Type

 
'円柱の表面積と体積を計算する Functionマクロ

Function Cylinder(r As Double, h As Double) As Solid

 Dim pi As Double

 '円周率の定義
 pi = 4 * Atn(1)

 '表面積の計算
 Cylinder.sarea = 2 * pi * (r ^ 2 + r * h)

 '体積の計算
 Cylinder.volume = pi * r ^ 2 * h

End Function

 
(2) 次のようなサブルーチンを作って関数を呼び出します。

Sub TestCylinder()

 Debug.Print "S = " & Cylinder(15, 80).sarea
 Debug.Print "V = " & Cylinder(15, 80).volume

End Sub

 このマクロを実行すると

 S = 8953.53906273091
 V = 56548.6677646163

という結果がイミディエイトウィンドウに表示されます。

スポンサーリンク
スポンサーリンク
末尾広告
末尾広告

コメントをどうぞ

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください