- ベストアンサー
別のプロシージャに変数を渡したい
別のプロシージャに変数を渡せなくて困っています。 下記の内容を実行させようとしています。 1.command1ボタンをクリックして計算を終えて 2.command2ボタンをクリックすると計算結果をクリップボードに入れてメモ帳に貼り付ける コードの概要は下記です。 【1.】////////////////////////////////////////////////////////////// Private Sub Command1_Click() Dim final as String 'いろいろと計算して最終的にfinalというstring型変数に文字列を得る。 final=計算結果 End Sub 【2.】////////////////////////////////////////////////////////////// Private Sub command2_click() Clipboard.Clear Clipboard.SetText final Dim memo As Long memo = Shell("Notepad.exe", vbNormalFocus) AppActivate memo, True 'アプリをアクティブにする SendKeys "^v" End Sub ////////////////////////////////////////////////////////////////////// 調べた結果,ByValがキーワードではないかと思い,Private Sub Command1_Click(ByVala final as string)など試してみましたができませんでした。 [余談] 1.のプロシージャ内で,クリップボードに入れてしまえばよいのですが,そうすると,1.の処理が終わってから,command2を押すまでの間にユーザがクリップボードを利用したら,このプログラムが成立しなくなるので,それは避けたいと思っています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
変数 final の宣言を Commanc1_Click の外に出してみてください。 Option Exciplicit などの直後に宣言し、スコープがフォーム内になるように宣言して見てください。 プロシジャ内で宣言すると、スコープはプロシジャ内になってしまいます。
その他の回答 (1)
- zealzany
- ベストアンサー率35% (19/53)
「変数のスコープ(適用範囲)」 意味はURLを参考にしてください。
お礼
ありがとうございました。 ------------------------ (General)で下記の宣言をすることで解決しました。 Public final As String