
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の知識はあまりなく、低レベルな質問かもしれませんが、よろしくお願いします。
No.2ベストアンサー
- 回答日時:
VB7以降(=VB.NET以降) では,Returnは戻り値を指定して関数から戻る (またはサブプロシージャから戻る) 機能になっています。
しかし,VB6およびそれ以前や,VBAでは,ReturnはGoSub文で呼び出されたサブルーチンから戻る機能です。
このため,関数の戻り値を指定して関数から戻る目的でReturn文を使うことはできません。
なお,#1さんへのお礼に書かれていたページでは,
・背景が緑のものはVB6用のコード
・背景が青のものはVB.NET用のコード
です。
なるほど。
記事をよく読んでいませんでした。申し訳ないです。
VB7以降では「Return 戻り値」が使えるけれど、VB6以前では使えないということですね。
ありがとうございます。
No.3
- 回答日時:
No.1さんの「お礼」で示されたページの説明を良く理解してください。
Return "Hello!"
のように書けるのはVB.NETの場合だけです。
VB6ではGoSubに対するReturunであってReturunに戻り値を引数を持つことはできません(関数を脱けるステートメントではない)。
このGoSub-Returunは古いバージョンのVBとの互換性のために残されたものであってVB6での使用は推奨されない。
VBAは詳しくありませんがVB6と同じか実装されていないかもしれません。
ヘルプで確認してください。
回答ありがとうございます。
No.2さんのお礼に書いたとおりです。
私の読解不足でした。
uruzさんの回答も質問に対して十分な回答ですが、
先着順ということで、No.2さんをベストアンサーとさせていただきます。
No.1
- 回答日時:
それは、CやC#でのReturnです。
VBAの場合は、
Function IsTen = True ※つまりユーザー関数に代入するとそれが戻り値になる。
として、Returnです。
回答ありがとうございます。
Function IsTen = True とする書き方は知っているのですが、以下のサイトを見ると Returnで値を返せると言ってます。
http://www.atmarkit.co.jp/fdotnet/vb6tonet/vb6to …
「Return文のあとには式を書くことができ、これにより、関数が返す値を指定できる。」
サンプルを見ると、Return "Hello!" として String の値を返しています。
VB 6の機能と書いてるので、Excel2007はVB 6に対応してないということなのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
Functionで戻り値を複数返す方法
Visual Basic(VBA)
-
値を返さないコード パス
Visual Basic(VBA)
-
Designer.vbは直接コードをいじってはだめ?
Visual Basic(VBA)
-
-
4
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
-
5
VB.NETで他のプロジェクトで作成したフォームを使う方法
Visual Basic(VBA)
-
6
CloseとDisposeの違い
Visual Basic(VBA)
-
7
return trueとreturn falseの用途・違いは・・・?
JavaScript
-
8
VB.NET getとsetの概念がわかりません。
Visual Basic(VBA)
-
9
VBでグローバル変数を宣言するには
Visual Basic(VBA)
-
10
VB.NET2005 TextBox 高さ(Height) 変更
Visual Basic(VBA)
-
11
VB.NET Excelを読み込んでDataTableに格納し、DBにデータをINSERTする
Microsoft ASP
-
12
文字列の後ろから必要分だけ削除したい。
Visual Basic(VBA)
-
13
【VB6.0】 あるフォームから他のフォームへ値を受け渡したい
Visual Basic(VBA)
-
14
exeファイルの中身を見ることは可能ですか?
フリーソフト
-
15
VBの「As String * 128」とは?
Visual Basic(VBA)
-
16
VBの質問#if 0 then ってどう言う意味?
Excel(エクセル)
-
17
TextBoxに半角数字のみの入力しかできないようにしたい
Visual Basic(VBA)
-
18
VB.NETでのイベントの途中終了
Visual Basic(VBA)
-
19
VB.net 任意の例外を発生させるには・・・
Visual Basic(VBA)
-
20
String"から型'Double'への変換は無効です。 とエラーが出ます。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBのReturnの使い方
-
画面を強制的に再描画させる方法
-
UWSCの終了の仕方
-
Escキーを押すと、中断する時と...
-
VBAでの一時停止と再開の方法
-
For文を使った九九表の作成
-
アクティブセルから、A列最終行...
-
DOSコマンドのループ内のTIMEコ...
-
「偶数・奇数の和」のフローチ...
-
VBAのautofilter、criteriaの配...
-
CSVファイルの特定の行だけを読...
-
二次元配列のインデックスについて
-
メビウスループの画像
-
素数の個数を求めるプログラミング
-
繰り返し処理で50音順にする方法
-
WinAPI「MsgWaitForMultipleObj...
-
C#で別のフォームのprogress ba...
-
エクセルVBAでTransposeの不思議
-
プログラムはif文とforループが...
-
レインボー色ってどうやって表...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBのReturnの使い方
-
プロシージャとは
-
Perl実行時のメモリ不足について
-
ExcelVBAでのデータ型変換、も...
-
RFC822形式の日付を生成するサ...
-
COBOLから呼ばれる時
-
Perlの関数の引数について詳細
-
fortran77教えてください
-
${str}と$strの違いとは?
-
yychatのcokkie機能がおかしく...
-
渡された引数の型を判別する
-
リファレンスをサブルーチンの...
-
COBOLの日付操作
-
CGIのサブルーチンの呼び出...
-
パターンマチングについて(CGI)
-
Perlのmyのサブルーチンの内外...
-
画面を強制的に再描画させる方法
-
UWSCの終了の仕方
-
CSVファイルの特定の行だけを読...
-
範囲指定したセルを1つずつ飛...
おすすめ情報