• ベストアンサー

値渡しについて

UserForm1で以下のように求めた値「R」を UserForm2に渡すにはどのようにすればよいのでしょうか。 **************************************** <UserForm1(コード)> Public R As Integer ----------------------------------- Private Sub CommandButton1_Click()    Dim N As Integer        :    N = TextBox1.Text    R= N * 2 + 3        : End Sub **************************************** <UserForm2(コード)> Private Sub CommandButton1_Click()   Dim i As Integer       :   For i = 4 To R       :   Next i       : End Sub **************************************** どなたか教えて下さい。

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

  • ベストアンサー
  • fortranxp
  • ベストアンサー率26% (181/684)
回答No.4

Sheet1にデータを保存しましょう。 Public R As Integer Private Sub CommandButton1_Click() Dim N As Integer    N = TextBox1.Text R = N * 2 + 3 Sheet1.Cells(1, 1).Value = R TextBox1.Text = Sheet1.Cells(1, 1).Value End Sub Private Sub CommandButton1_Click() Dim i As Integer For i = 4 To Sheet1.Cells(1, 1).Value Label1.Caption = i Next i End Sub

piopao
質問者

お礼

回答ありがとうございます。 シートに値を保存させることにします。 本当にありがとうございました。

その他の回答 (3)

  • Kuppycat
  • ベストアンサー率50% (109/216)
回答No.3

グローバルモジュールで「R」を宣言すればよいのでは? <Module1> Public R As Integer <UserForm1> Private Sub CommandButton1_Click()    Dim N As Integer        :    N = TextBox1.Text    R= N * 2 + 3        : End Sub <UserForm2> Private Sub CommandButton1_Click()   Dim i As Integer       :   For i = 4 To R       :   Next i       : End Sub

piopao
質問者

お礼

回答ありがとうございます。 連続して操作しているときはよいのですが、 いったん保存してファイルを閉じたら、 再度ファイルを開いたときには、保存時の値(R)はもう保持しておらず・・・ #4さんの回答を参考にして、値をシートに表示させることにしました。 色々教えていただき、本当にありがとうございました。

  • fortranxp
  • ベストアンサー率26% (181/684)
回答No.2

>仮の箱があってそこにデータ(R)を入れておき、 >UserForm1のCommandButton1がクリックされTextBox1 >にデータが入力された場合は、 >箱の中の値(R)を上書きするイメージのプログラムを >書きたいのですが可能でしょうか。 Private Sub CommandButton1_Click() Dim N As Integer N = TextBox1.Text R = N * 2 + 3 TextBox1.Text = R UserForm2.Show End Sub その前にTextBox1のプロパティウィンドウのTextに 最初の数値を入れて置いてください。

piopao
質問者

お礼

回答ありがとうございます。 連続して操作しているときはよいのですが、 いったん保存してファイルを閉じたら、 再度ファイルを開いたときには、保存時の値(R)はもう保持しておらず・・・ #4さんの回答を参考にして、値をシートに表示させることにしました。 色々教えていただき、本当にありがとうございました。

  • fortranxp
  • ベストアンサー率26% (181/684)
回答No.1

Public R As Integer Private Sub CommandButton1_Click() Dim N As Integer N = TextBox1.Text R = N * 2 + 3 UserForm2.Show End Sub Private Sub CommandButton1_Click() Dim i As Integer For i = 4 To UserForm1.R Next i Label1.Caption = i End Sub

piopao
質問者

補足

回答ありがとうございます。 私の書き方がいけなかったのですが、 はじめプログラムを実行したときは、 UserForm1のプログラムを実行させるのですが、 保存して2度目以降実行するときは、UserForm1は実行せず、 UserForm2から実行させたいと思っています。 ですので、教えていただいたやり方だと、 2度目以降実行すると「UserForm1.R」には0が入り・・・。 仮の箱があってそこにデータ(R)を入れておき、 UserForm1のCommandButton1がクリックされTextBox1にデータが入力された場合は、 箱の中の値(R)を上書きするイメージのプログラムを書きたいのですが可能でしょうか。