• ベストアンサー

別のプロシージャに変数を渡したい

別のプロシージャに変数を渡せなくて困っています。 下記の内容を実行させようとしています。 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を押すまでの間にユーザがクリップボードを利用したら,このプログラムが成立しなくなるので,それは避けたいと思っています。

質問者が選んだベストアンサー

  • ベストアンサー
  • gatyan
  • ベストアンサー率41% (160/385)
回答No.1

変数 final の宣言を Commanc1_Click の外に出してみてください。 Option Exciplicit などの直後に宣言し、スコープがフォーム内になるように宣言して見てください。 プロシジャ内で宣言すると、スコープはプロシジャ内になってしまいます。

keiko_3956
質問者

お礼

ありがとうございました。 ------------------------ (General)で下記の宣言をすることで解決しました。 Public final As String

その他の回答 (1)

  • zealzany
  • ベストアンサー率35% (19/53)
回答No.2

「変数のスコープ(適用範囲)」 意味はURLを参考にしてください。

参考URL:
http://search.yahoo.co.jp/bin/query?p=VB+%a5%b9%a5%b3%a1%bc%a5%d7%a1%a1%c8%cf%b0%cf&hc=0&hs=0

関連するQ&A