プロが教える店舗&オフィスのセキュリティ対策術

Excel2007のVBで以下のfunctionを定義すると、Returnのところでコンパイルエラーになります。

--------------------------------------
Public Function IsTen(lNumber As Integer) As Boolean
If lNumber = 10 Then
Return True
Else
Return False
End If
End Function
--------------------------------------

ググってみるとReturn True とか Return False とかができるように思えるのですが、何が不味いのでしょうか?

VBの知識はあまりなく、低レベルな質問かもしれませんが、よろしくお願いします。

A 回答 (3件)

VB7以降(=VB.NET以降) では,Returnは戻り値を指定して関数から戻る (またはサブプロシージャから戻る) 機能になっています。



しかし,VB6およびそれ以前や,VBAでは,ReturnはGoSub文で呼び出されたサブルーチンから戻る機能です。
このため,関数の戻り値を指定して関数から戻る目的でReturn文を使うことはできません。

なお,#1さんへのお礼に書かれていたページでは,
・背景が緑のものはVB6用のコード
・背景が青のものはVB.NET用のコード
です。
    • good
    • 1
この回答へのお礼

なるほど。
記事をよく読んでいませんでした。申し訳ないです。

VB7以降では「Return 戻り値」が使えるけれど、VB6以前では使えないということですね。

ありがとうございます。

お礼日時:2011/07/12 23:47

No.1さんの「お礼」で示されたページの説明を良く理解してください。


Return "Hello!"
のように書けるのはVB.NETの場合だけです。
VB6ではGoSubに対するReturunであってReturunに戻り値を引数を持つことはできません(関数を脱けるステートメントではない)。
このGoSub-Returunは古いバージョンのVBとの互換性のために残されたものであってVB6での使用は推奨されない。
VBAは詳しくありませんがVB6と同じか実装されていないかもしれません。
ヘルプで確認してください。
    • good
    • 1
この回答へのお礼

回答ありがとうございます。

No.2さんのお礼に書いたとおりです。
私の読解不足でした。

uruzさんの回答も質問に対して十分な回答ですが、
先着順ということで、No.2さんをベストアンサーとさせていただきます。

お礼日時:2011/07/12 23:51

それは、CやC#でのReturnです。


VBAの場合は、
Function IsTen = True  ※つまりユーザー関数に代入するとそれが戻り値になる。
として、Returnです。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

Function IsTen = True とする書き方は知っているのですが、以下のサイトを見ると Returnで値を返せると言ってます。

http://www.atmarkit.co.jp/fdotnet/vb6tonet/vb6to …
「Return文のあとには式を書くことができ、これにより、関数が返す値を指定できる。」

サンプルを見ると、Return "Hello!" として String の値を返しています。

VB 6の機能と書いてるので、Excel2007はVB 6に対応してないということなのでしょうか?

お礼日時:2011/07/12 22:55

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A