Visual Basic 6.0 初級講座
VB6対応

 

Visual Basic 中学校 > VB6 初級講座 >

第4回 関数

 

今回は「関数」です。VBの関数はとても便利なものです。またちゃんとしたプログラムを作るのに関数を使わないということはまず不可能です。学生時代 関数で苦労した人には嫌な 気がするかも知れませんが、プログラムで言う関数とは数学で言う関数とは雰囲気が違います。まったく新しい物だと思って気分一新して下さい。

この回の要約

・関数とは…

・いくつかの関数の使用方法。

・関数に関する基本用語。

 

1.関数とは…

 

コマンドボタンを配置して次のようにプログラムしてみましょう。

VB6対応

Private Sub Command1_Click()

Dim K As Double

K = 123.56

MsgBox K

End Sub

■コード1

Double(ダブル)は小数をあらわす型でしたね。型については前回説明しましたがわからなくても気にしないで「まぁ小数ね」って感じで先へ進みましょう。わからないところにこだわっていてはなかなか前へ進めないものです。

さて、このプログラムを実行するとどうなるかはもう分かるでしょう。123.56と表示されます。

それでは、小数点以下を切り捨てて表示させるにはどうしたらよいでしょうか? もちろん2行目のK = 123.56 を K = 123 と直してしまえばいいのですが、今回はここはこのままで小数点以下を切り捨てる方法を探ります。答えは以下のようになります。

VB6対応

Private Sub Command1_Click()

Dim K As Double

K = 123.56

MsgBox Fix(K)

End Sub

■コード2:小数点以下を切り捨てる

どうです? ちゃんと切り捨てられるでしょう。もちろん、これは新たに追加した、Fix( ) (フィックス)のおかげです。このFix()は関数の一つで、かっこのなかに入れた数字の小数点以下を切り捨てた数字を返します。

このように関数とは かっこ の中に何か入れると それをもとに 何かを返す 働きをします。

関数の考え方

■画像1:関数の考え方

「何かを入れるとそれをもとに何かを返す」と今のFix関数の例に当てはめて言うと「123.56ともとに123を返す。」ということになります。Fix関数がどのようにして切捨てを行っているのかはわかりませんが、我々にとって重要なのはFix関数を使えば切捨てができるということなのです。

さぁ、VBにはこのようにいろいろと機能してくれる関数がたくさん用意されています。 この関数たちのおかげであなたは面倒くさいプログラムから解放されるのです。切捨てをするプログラムを自分で書くなんてことを想像してみてください!(おー、嫌だ)。関数を使いこなして快適なプログラミングライフを送りましょう。

 

2.関数の基本用語

 

関数はかっこの中に数字(ときには文字)を入れて使います。このかっこの中に入れる数字を「引数」(ひきすう)と言います。また、関数は必ず値を返します。この帰ってくる値のことを「返り値」 (かえりち)、「戻り値」(もどりち)などと言います。戻り値は K = Fix(123.56) のように変数で待ちかまえて受け取るのが一般的です。

たとえば、この Fix関数で、

K = Fix(123.56)

と書いた場合、引数は 123.56 戻り値は 123 で、この戻り値を変数Kが受け取ります。そこで K = 123 となるわけです。

引数と戻り値の例

■画像2:引数と戻り値の例

引数は変数でもかまわないし、戻り値は変数に入れないで直接利用してもかまいません。

なお、関数の使い方には例外もあります。

 

3.文字に関する関数

 

関数と言っても数字ばかりではありません。たとえば、Len関数(レン)は文字列を引数にとり、その文字の長さ(文字数)を返します。

例: K = Len("あいうえお")

この例では、引数は文字列"あいうえお"で、戻り値は 5 です。これは"あいうえお"が全部で5文字だからです。このように いろいろな関数の機能を把握することは重要です。

Len関数の考え方

■画像3:Len関数の考え方

よくでてくる関数をすこしばかり紹介しましょう。

関数 読み方 機能
LCase エルケース 引数を小文字にして返す。(アルファベット)。
Left レフト 引数の左から指定した数だけ文字を取り出して返す。
Len レン 引数の文字数を返す。
Right ライト 引数の右から指定した数だけ文字を取り出して返す。
Mid ミッド 引数の指定した位置から指定した数だけ文字を取り出して返す。
Trim トリム 引数から前後のスペースだけを削除して返す。

■表1:文字に関する主な関数

この他にも便利な関数はあるのですが、簡単には説明できないので今は省略します。

ここでは、Left関数に注目しましょう。この関数の例を下に示します。

K = Left("ABCDE", 2)

引数は"ABCDE"と 2 の2つです。このように複雑な関数では2つ以上の引数をとります。この例の場合戻り値は "AB" です。第一引数の左から 2文字を取り出して返したわけです。「2」文字の「2」は第2引数として指定した値です。

Left関数

■画像4:Left関数。このように複数の引数を取る関数もたくさんある。

引数の順番も大切で、この例では K = Left(2, "ABCDE")のように逆に書いてしまうとエラーになります。引数が複数ある場合は必ず決まった順番で指定しなければなりません。

ちなみにこのLeft関数によく似た関数にRight関数があります。Left関数との違いは文字列の右側から文字を切り取るところです。

さらに、よく使う重要なバリエーションに Mid関数 (ミッド) があります。次のようにして使います。

K = Mid ("かきくけこ", 2, 3)

なんと 3つの引数をとります(ただし、3つ目の引数は省略することもできます)。この例の意味は

 "かきくけこ" の 2文字目から 3文字を取り出して返せ

と言うようになります。

ということは戻り値は "きくけ" ですね。

それから、日本人なら ひらがなをカタカナにしたり、その逆をする関数も紹介しておきましょう。

次の例では ひらがなをカタカナにします。

K = StrConv("楽しいVBプログラミング", vbKatakana)

戻り値は "楽シイVBプログラミング" となります。

カタカナをひらがなにするには次のようにします。

K = StrConv("楽しいVBプログラミング", vbHiragana)

戻り値は "楽しいVBぷろぐらみんぐ" です。

この関数の使い方は日本用の特別仕様でしょう。中国版には簡体と繁体を変換したりする関数が 用意されているのかもしれませんね。中国版を見たことがないのでわかりませんが・・・・・。

 

3.数字に関する関数

 

数字に関する主な関数は次の通りです。

関数 読み方 説明
Abs アブソリュート 絶対値を返す
Fix フィックス 小数点以下を切り捨てて返す
Sin サイン 正弦を返す。(この他の三角関数もある)。
Sqr スクウェア 正の平方根を返す

■表2:数字に関する主な関数

まだまだあるのですが、数字に関する関数はどうも数学っぽくなるのでこれくらいにしておきます。しかし、グラフィックス系のプログラムではこのあたりの関数もばしばしつかいますよ。

 

4.機能的な関数

 

関数の戻り値は文字列や数字だけではありません。音を返す関数や、色を返す関数もあります。音を返すのは Beep (ビープ)です。引数はとりません。ただ、Beepとだけ書けば音を返します。「音を返す」とは、この場合は「音を鳴らす」と言う意味です。

色を返す関数は、前々から何回も登場しているRGB関数です。これについては初級編の第1回ですでに説明しています。RGB関数も 赤、緑、青と3つの引数をとりますね。

他には画像を返す LoadPicture関数。これは引数に画像ファイルのパスをとります。たとえば、C:\Test.bmpと言うファイルがあったとすると、LoadPicture("C:\Test.bmp") はそのファイルの画像を返します。ただし、画像は普通の変数では受け取ることはできません。画像を受け取るにはフォームなどのPictureプロパティを使います。

Form1.Picture = LoadPicture("C:\Test.bmp")

この他に前回までに登場したInputBox(インプットボックス)やMsgBox(メッセージボックス)も関数です。InputBox関数はユーザーからの入力を返す便利な関数です。 「質問文を引数に取り、回答を返す関数」ともいえますね。前にも少し登場しましたがここであらためてサンプルを掲載しましょう。実際に試したことがない方は何が起こるのか自分の目で確かめてみてください。

VB6対応

Private Sub Command1_Click()

Dim Answer As String

Answer = InputBox("あなたの名前はなんですか?")

MsgBox "こんにちは" & Answer & "さん。"

End Sub

■コード3:InputBox関数の使用例

ところで、MsgBox関数は普段はメッセージを表示させるためだけに使っているのであまり関数みたいには見えないかもしれませんね。実はMsgBox関数にはユーザーの選択を返す機能があるのです。しかし、この機能は次回に解説する条件判断の知識がないと意味がないので次回にあらためて紹介することにします。

他の機能的な関数の詳細も後々解説する機会があると思いますが、 今回は深入りしません。今回はVBの中で関数を使うことの便利さと関数の一般的な使い方が理解していただければ私の意図は達成されたことになります。

 

5.まとめ

 

今回の新出語

新出語 読み方 説明
Fix フィックス 小数点以下の数値を切り捨てて返す関数
Len レン 文字列の文字数を返す関数
LCase エルケース 文字列中のアルファベットを小文字にして返す関数
Left レフト 文字列の左から指定した文字数分だけ文字列を切り取って返す関数
Right ライト 文字列の右から指定した文字数分だけ文字列を切り取って返す関数
Mid ミッド 文字列の指定した位置から指定した文字数分だけ文字列を切り取って返す関数
Trim トリム 文字列の前後のスペースを削除して返す関数
StrConv エスティーアールコンブ 文字列をいろいろと変換して返す関数
vbKatakana ブイビーカタカナ StrConv関数とともに使い文字列をカタカナに変換するように指示する定数
vbHiragana ブイビーヒラガナ StrConv関数とともに使い文字列をひらがなに変換するように指示する定数
Abs アブソリュート 絶対値を返す関数
Sin サイン 正弦を返す関数
Sqr スクウェア 正の平方根を返す関数
Beep ビープ 音を鳴らす関数
LoadPicture ロードピクチャー 画像ファイルから画像を読み込んで返す関数
Picture ピクチャー 背景の画像をあらわすプロパティ
関数 かんすう (→今回の解説を読んでください)
引数 ひきすう 関数に渡す値。
戻り値 もどりち 関数が返す値。
返り値 かえりち (戻り値のこと)

■表3:今回新しく登場した言葉。赤字は必修単語です。