関数とは
値を受け取り、処理結果を返す。
- 受け取る値は、引数。
- 処理結果は、戻り値。
- 値には種類があり、型(数値型、文字列型、日付型など)という。
※引数というけど、数字以外の文字、日付などもOK。
※引数(受けとる値)、戻り値には、型がある。
関数を書く
書き方は人それぞれ、ここから↓は、私の書き方。
(例)三角形の面積を求める関数。
コーディング前
↓を考える。
No. | 項目 | 例 |
---|---|---|
1. | 関数名 | TriangleArea |
2. | 引数 (型) | base(数値)、height(数値) |
3. | 戻り値(型) | 三角形の面積(数値) |
4. | 処理手順 | 底辺 × 高さ ÷ 2 |
※関数名、引数は、好きな名前でOK。
コーディング
外側を書いて、処理(中身)を書く。
外側
コーディング前に考えた、1~3を使う。
Function TriangleArea(base As Integer, height As Integer) As Integer
Dim result As Integer '戻り値(処理結果)を入れる変数を宣言
'後で、ここに処理を書く
TriangleArea = result '戻り値(処理結果)を返す
End Function
Function ~ End Function
関数を書く範囲。Dim 変数名 As 型
変数の宣言、および、型の指定。※Dim
はないけど、引数も変数。
※As Integer
は、数値型。As String
は、文字列型など。
※変数名は好きな名前でOK。
内側(処理)
コーディング前に考えた、4を使う。
'Function TriangleArea(base As Integer, height As Integer) As Integer
'Dim result As Integer '戻り値(処理結果)を入れる変数を宣言
result = base * height / 2 '底辺×高さ÷2
'TriangleArea = result '戻り値(処理結果)を返す
'End Function
補足
↑のコードは、↓のように書くこともできる。 コードはできる限り書かないことが理想なので、↓の方が理想的。 処理が複雑な場合、戻り値を入れる変数を用意した方が、コードが読みやすいと思うので、↑の書き方にしてる。 今回、処理は簡単だけど、説明のため書いた。Function TriangleArea(base As Integer, height As Integer) As Integer
TriangleArea = base * height / 2 '底辺×高さ÷2
End Function
関数を使う
↓を考えてから使う。
- 関数を使うと得られる結果(戻り値)は?
- 引数は何個?
- 引数の型は?
間違えると、大変。。。
使い方
関数名(値1、値2、・・・)
関数を使う場合、関数名と渡す値を記述するだけ。
↓だと、TriangleArea(7, 4)
の部分
'関数を使う側
Sub AnyName()
Dim answer As Integer '戻り値を受け取る変数を宣言。
answer = TriangleArea(7, 4) '関数に値7、4を渡す。answerに戻り値14が返ってくる。
End Sub
'関数 (値を受け取る base = 7, height = 4)
Function TriangleArea(base As Integer, height As Integer) As Integer
Dim result As Integer '戻り値(処理結果)を入れる変数を宣言
result = base * height / 2 '底辺×高さ÷2
TriangleArea = result '戻り値(処理結果)を返す。
End Function
Sub ~ End Sub
関数を使う側のコードを書く範囲。エラーになる場合
anser = TriangleArea(7, "よん") 違う型を渡す
TriangleArea
の引数は、数値型。よって、文字を渡すとエラーになる。
anser = TriangleArea(7) 渡す値が少ない
TriangleArea
の引数は、底辺と高さの2つ。1つしか渡さない場合は、エラーになる。
Dim anser As String
anser = Triangle(7,4) 処理結果と異なる型で受け取る
TriangleArea
の戻り値は数値型。しかし、戻り値を文字列型で受けようとするとエラーになる。
2018.03.02追記
3つ目は、Excelではエラーにはなりませんでした。。。
さいごに
Excelには、SUM、AVERAGE、VLOOKUPなど様々な関数がデフォルトで用意されているため、関数を書く必要はほとんどない。
※全文みてくれた人、ありがとうごめんなさい。
つまり、Excelで覚えるべきことは、
- 関数の使い方
- 関数を使う側のコードの書き方(Sub ~ End Sub)
関数が使えれば、Excel作業は十分できる。
関数を使う側のコードの書き方がわかれば、マクロの作成・編集ができる。