次のようなコマンドボタンが2つあります。
Pribate Sub Command1_Click()
dim a As Integer
a=0
a=a+1
End Sub
Pribate Sub Command2_click()
省略
End Sub
command2でcommand1の変数を呼び出す事って出来るんですか?
教えてください
解決しました
質問書いたからには,自己解決でも解決方法の要約は書いた方がよいですよ。
まぁ,今回の場合,直接的に答えると,
・command1やcommand2のインスタンスが持っている変数(=内部実装)に手を付けることはできない
・元々,変数を呼び出すことはできない
ってとこです。一生懸命頑張って言いたいことを予測して答えると,
・Command2_Clickからは,どう頑張ってもCommand1_Clickの値を参照できない
というところでしょうか。
つーか,プログラムが根本から違っている気がしますね……。
何度Command1_Clickを通っても,Command1_Clickから出るときのaの値は常に1ですし……。
解決したようですが、一応。
Private Declare Sub RtlMoveMemory Lib "kernel32" (Destination As Any, Source As Any, ByVal Length As Long)
Private Sub Command1_Click()
Dim a As Long
Call GetPtr(VarPtr(a))
Call Command2_Click
MsgBox a
End Sub
Private Sub Command2_Click()
Dim Ptr As Long
Dim a As Long
a = 100
Ptr = GetPtr(0)
If Ptr <> 0 Then RtlMoveMemory ByVal Ptr, a, LenB(a)
End Sub
Private Function GetPtr(ByVal SetPtr As Long) As Long
Static Ptr As Long
If SetPtr <> 0 Then
Ptr = SetPtr
Ptr = 0
End If
GetPtr = Ptr
End Function
こんなプログラム、絶対イヤですけどね。
Command2をクリックした時にもやりたいんなら
Command1_Clickのaをstaticにする必要がありますけど。
ツイート | ![]() |