【超初心者質問】戻り値がいらない場合のプロシージャの記述は?

解決


mady  2003-10-22 20:21:46  No: 109324

引数はいるけど戻り値がいらない場合のプロシージャの記述方法ですが、

今の私の認識では、
戻り値がある場合にはfunction
戻り値が無い場合はsubで記述すると思っています。

で、共通関数的に使用したく、

標準モジュールに以下のように記述しました
Public Sub outputFile(fileName As String, contents As String)
    Open fileName For Output As #1
    Print #1, contents
    Close #1
End Sub

呼び出し元ではこのように書きたいのです。
outputFile(TxtOutputFileName.Text, TxtResult.Text)

すると、「戻り値を受け取れ」と赤表示になってしまいます。

根本的に考え方が間違っているのでしょうか?
(JavaからVBに転向したばかりなので概念の違いに戸惑っています)

よろしくお願いします。


ファン太  2003-10-22 20:31:37  No: 109325

Call outputFile(TxtOutputFileName.Text, TxtResult.Text)
じゃダメなんですか?  

outputFile  TxtOutputFileName.Text, TxtResult.Text  
だとコンパイル通るような気がしましたが?


魔界の仮面弁士  2003-10-22 20:31:39  No: 109326

VBA、VB6以下、およびVBScriptでは、戻り値の無いメソッド(Subプロシージャ)を
呼び出すときには、括弧を使わない事になっています。
(ただしVB.NETの場合は、括弧が必要です。)

つまり、
  outputFile(TxtOutputFileName.Text, TxtResult.Text)
ではなく、
  outputFile TxtOutputFileName.Text, TxtResult.Text
のように記述します。

もし、括弧を使う場合は、
  Call outputFile(TxtOutputFileName.Text, TxtResult.Text)
のように、『Call 』を先頭に記述する事になります。


mady  2003-10-22 20:36:35  No: 109327

おそらく多くの方がお気づきと思いますが、一部間違って書いてしまいました

標準モジュールに書いたときには
functionで記述しました。
で、今のところ、(何も返さないのに)意味の無い
値の受け取り処理を記述しています。

フォームのコードに記述したときには
subとfunctionの両方を試したのですが、
subで書いても同じように戻り値受け取りを要求されます。


mady  2003-10-22 20:41:38  No: 109328

「やべ、間違えた」と気づき
訂正の書き込みをしている間に回答をいただいておりました。

で、お二人の回答どおりに記述したところ解決しました。
タイトルどおり超初心者質問でしたね。
でも、本を見てもわからなかったので。お恥ずかしいですが。
ファン太さん魔界の仮面弁士さんありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加