■ 現在のこのページの役立ち度:
表示されない場合こちらのリンクからもご覧になれます。
■ このページの役立ち度を評価する:
役立ち度を評価してください。
(1(左):あまり役立たない - 5(右):大変役立った):
■ ページの共有:
[ サイト内検索 ]
カスタム検索
#16052-0SubプロシージャのCallYOKO2000-11-08(水) 12:36
     #16054-0RE#16052:SubプロシージャのCallぺんぺん2000-11-08(水) 13:26
     #16055-0RE#16052:SubプロシージャのCallいなちゃん2000-11-08(水) 13:29
     #16056-0RE#16052:SubプロシージャのCallLESIA2000-11-08(水) 13:38
     #16060-0RE#16052:SubプロシージャのCallYOKO2000-11-08(水) 15:26
#16052-0
SubプロシージャのCall
皆様、お世話になっております。
非常に基本的なことについてお尋ねしたいと思います。

SubプロシージャをCallした際に
ByRefの引数が返っていない現象が発生しました。
調査した結果、
SubプロシージャをCallする際に以下の形をとると
ByRefで値が返ってこないようです。
VB初めて半年というのに初歩的な事で良く躓きます(^^;

 ProcSub (lHikisuu)

原因はわかったのですが、
何故上記Call方法で問題の現象が発生するのかがわかりません
()が演算子である事と、参照渡しで或る事が起因しての事と思うのですが

どなたか理由をご存知でしたら
教えてくださると幸いです
#16054-0
RE#16052:SubプロシージャのCall
> SubプロシージャをCallした際に
> ByRefの引数が返っていない現象が発生しました。
> 調査した結果、
> SubプロシージャをCallする際に以下の形をとると
> ByRefで値が返ってこないようです。
> VB初めて半年というのに初歩的な事で良く躓きます(^^;
> 
>  ProcSub (lHikisuu)
> 
> 原因はわかったのですが、
> 何故上記Call方法で問題の現象が発生するのかがわかりません
> ()が演算子である事と、参照渡しで或る事が起因しての事と思うのですが
Call ProcSub(lHikisuu) としても同じでしょうか?
#16055-0
RE#16052:SubプロシージャのCall
> SubプロシージャをCallした際に
> ByRefの引数が返っていない現象が発生しました。
> 調査した結果、
> SubプロシージャをCallする際に以下の形をとると
> ByRefで値が返ってこないようです。
>  ProcSub (lHikisuu)
> 何故上記Call方法で問題の現象が発生するのかがわかりません
> ()が演算子である事と、参照渡しで或る事が起因しての事と思うのですが
ヘルプより
 プロシージャを呼び出すとき、キーワード Call は省略できます。
 キーワード Call を使って、引数が必要なプロシージャを呼び出す場合は、引数リスト (引数 argumentlist) をかっこで囲む必要があります。
 キーワード Call を省略するときは、引数リストを囲むかっこも省略しなければなりません。
#16056-0
RE#16052:SubプロシージャのCall
> 原因はわかったのですが、
> 何故上記Call方法で問題の現象が発生するのかがわかりません
> ()が演算子である事と、参照渡しで或る事が起因しての事と思うのですが
> 
> どなたか理由をご存知でしたら
> 教えてくださると幸いです

ここが参考になると思います。
http://www.microsoft.com/JAPAN/developer/library/VBCon98/vbconpassingargumentstoprocedures.htm
#16060-0
RE#16052:SubプロシージャのCall
> 何故上記Call方法で問題の現象が発生するのかがわかりません
> ()が演算子である事と、参照渡しで或る事が起因しての事と思うのですが

皆さんのご助力のおかげで理解する事ができました。
どうもありがとうございました。

一応報告までに

Public Sub Main()
    Dim lTemp As Long
    
    '通常のCall
    Call ProcSub(lTemp)
    MsgBox "Main:" & CStr(lTemp)
    
    '通常のCall
    ProcSub lTemp
    MsgBox "Main:" & CStr(lTemp)
    
    '式を渡す
    ProcSub (lTemp + 3)
    MsgBox "Main:" & CStr(lTemp)
    
    '式として渡す
    ProcSub (lTemp)
    MsgBox "Main:" & CStr(lTemp)

End Sub
Public Sub ProcSub(ByRef lArg As Long)
    lArg = lArg + 1
    MsgBox "ProcSub:" & CStr(lArg)
End Sub
このページと関連する記事:
#20715-0Call MsgBoxと MsgBoxとどう違うの?2001-05-07(月) 14:29
#4974-01フォーム内で複数のプロシージャをCallする時のエラー1999-12-08(水) 15:10
#2603-2引数の渡し方が原因?2002-08-29(木) 08:55
#24828-0最終ページが理想どおりにならない2001-11-23(金) 17:52
#28905-0dll(VB)の2次元配列引数2000-08-29(火) 22:23
#11484-0質問です。2000-09-17(日) 23:44
#17734-0プロシージャへの引数と戻り値について教えて下さい。2001-09-12(水) 14:07
#17346-0byref引数の型が一致しません2000-12-25(月) 09:49
#16813-0ByValとByRefについて2000-12-04(月) 16:11
#290-2文字列操作について2003-11-22(土) 20:43
お探しの情報は見つかりましたか?お困りの問題は解決しましたか?
サイト内検索, 似た記事検索で見つからなくてもあきらめずに掲示板で質問してみましょう。
VB初心者友の会があなたのお役に立てれば幸いです。また、本ページの投稿者の方々にこの場を借りて感謝致します。
本ページは過去ログを集めて自動構成しています。よろしければこのページに関するフィードバックをお願いします。
(※ 構成の誤り、広告等の不適切な記事、リンク切れ、読めないページの報告など)