dポイントプレゼントキャンペーン実施中!

別のプロシージャに変数を渡せなくて困っています。
下記の内容を実行させようとしています。

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を押すまでの間にユーザがクリップボードを利用したら,このプログラムが成立しなくなるので,それは避けたいと思っています。

A 回答 (2件)

変数 final の宣言を Commanc1_Click の外に出してみてください。



Option Exciplicit などの直後に宣言し、スコープがフォーム内になるように宣言して見てください。
プロシジャ内で宣言すると、スコープはプロシジャ内になってしまいます。
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/02/01 12:51

「変数のスコープ(適用範囲)」


意味はURLを参考にしてください。

参考URL:http://search.yahoo.co.jp/bin/query?p=VB+%a5%b9% …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!