[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『Functionプロシージャについて』(SFO)
VBA初心者です。
A列の値を1.05倍してB列に入れるというマクロです。
下記の「num」は、
Long型の変数ということはわかるのですが、
numがA列の1行目から4行目までを
指しているというのは、
どこを見ればわかるのでしょうか。
sub⇔function間のやりとりが全然わかりません。
よろしくお願いします。
Sub sample1()
Dim i As Long For i = 1 To 4 Cells(i, 2) = tax(Cells(i, 1).Value) Next End Sub
Function tax(num As Long) As Long
tax = num * 1.05 End Function
< 使用 Excel:Excel2010、使用 OS:Windows7 >
numという変数は、あくまでもLong型のパラメータ変数ですよね? 別にA列のなにがしの値でなくても 答えを出してくれる関数(tax)として作成されています。良い関数ですね!!
>A列の1行目から4行目までを指して
意味のある数字にするのは、呼び出し側です
>Cells(i, 2) = tax(Cells(i, 1).Value) 上記の変数iがFor 〜 Next内で変化することでA列の1行目から4行目の値を元に関数taxが計算されています。
taxという関数は、税率もパラメータで指定できるとよいですね!!
(ichinose) 2014/04/06(日) 11:50
(SFO) 2014/04/06(日) 14:49
>numとA列の関係(・・?)がまだしっくりこないですが
taxというFunctionプロシジャーは、ある数値(num)を入力データにして、 このnumに1.05を乗算して、返す関数ですよね!!
Functionプロシジャーtaxは、入力データがあって始めてデータを返すことができるのですよね!!
f(x)=x+1
なんていう数学の関数と同じです。 f(2)=3になり、f(4)=5になります。 numは、このf(x)のxと同じ意味なんです。
変数numは、外部のプロシジャーから、このFunctionプロシジャーtaxにデータを渡すための手段なのです。
そして
Function tax(num As Long) As Long
これが numが受け渡しに使われる変数であるというプログラム書式(ルール)です。
Sub test() Dim a As Long Dim b As Long a = 100 MsgBox tax(a) b = 200 MsgBox tax(b) End Sub Function tax(num As Long) As Long tax = num * 1.05 End Function
testを実行すれば、105 210 と順次表示されます。
元のコードの以下に目を向けると、
Cells(i, 2) = tax(Cells(i, 1).Value)
変数iはFor 〜 Next文中で 1〜4に変化します。
i=1 の時は、 Cells(i, 1).Valueは、 Cells(1, 1).Value 1行1列目のセルつまり、セルA1の値を指しています。
よって、
tax(Cells(i, 1).Value)は、 tax(Cells(1, 1).Value)となり、 セルA1の値がtaxに送られます。
i=2 の時は、 Cells(i, 1).Valueは、 Cells(2, 1).Value 2行1列目のセルつまり、セルA2の値を指しています。
よって、
tax(Cells(i, 1).Value)は、 tax(Cells(2, 1).Value)となり、 セルA2の値がtaxに送られます。
この時の変数numをFunctionプロシャーtaxのパラメータと呼びます。 プロシジャーから、別のプロシジャーにデータを渡す方法としては、このパラメータ方式が 一番よいとされています。
私もプログラミングをはじめた当初は、このパラメータの概念を把握するのに時間がかかったことを 覚えています。
(ichinose) 2014/04/06(日) 18:07
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.