変数をよびだすには?

解決


ド素人  2002-10-25 17:52:02  No: 105260

次のようなコマンドボタンが2つあります。
Pribate Sub Command1_Click()
 dim a As Integer
 a=0
 a=a+1
End Sub

Pribate Sub Command2_click()
    省略
End Sub

command2でcommand1の変数を呼び出す事って出来るんですか?
教えてください


ド素人  2002-10-25 18:07:54  No: 105261

解決しました


YuO  2002-10-25 20:06:08  No: 105262

質問書いたからには,自己解決でも解決方法の要約は書いた方がよいですよ。

まぁ,今回の場合,直接的に答えると,
・command1やcommand2のインスタンスが持っている変数(=内部実装)に手を付けることはできない
・元々,変数を呼び出すことはできない
ってとこです。一生懸命頑張って言いたいことを予測して答えると,
・Command2_Clickからは,どう頑張ってもCommand1_Clickの値を参照できない
というところでしょうか。

つーか,プログラムが根本から違っている気がしますね……。
何度Command1_Clickを通っても,Command1_Clickから出るときのaの値は常に1ですし……。


こころ  URL  2002-10-27 22:39:28  No: 105263

解決したようですが、一応。

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にする必要がありますけど。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加