• ベストアンサー

Excel ユーザーフォーム間の Value 送受

VBA の迷走者です。 Excel の同じブック内に、入力忘れがないことを確認して貰うため、2個のユーザーフォームを作りました。(メッセージボックスの機能は見つかりません) UserForm1 の Textbox1 に入っている数値を、UserForm2 で示して、「これでよいか」と確認させるには、 UserForm1 と UserForm2 には、それぞれどう書けばよいのでしょうか。 UserForm2 は 表示だけなので、ラベルではうまくいきませんか。 教えて下さい。よろしくお願いします。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 前回のトラブルで懲りてしまいましたか?思い切って、UserFormのコードの全体を提示して、指示を仰いだほうが、安全かもしれません。UserForm を二つ使って、というのは、いつもVBAのコードを書いている私でも年に1度程度とあまりしません。私は、特にトラブルにあったことはありませんが、一応、気をつけなくてはならない点ぐらいは、自分自身でも、掲示板の回答を通してでも、経験してきています。

awazo
質問者

お礼

Wendy02さん ありがとうございます。 > コードの全体を提示して、指示を仰いだほうが、安全・・・ 次からそういたします。またよろしくお願いします。

その他の回答 (1)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんにちは。 ヘルプの件は、教えるつもりが教わってしまい、ありがとうございました。 ところで、UserForm で片方が確認用だけというのは、もったいないですね。 たとえば、ボタンを付けて、MsgBox で、以下のようにしたらどうなのですか? Private Sub CommandButton1_Click()  'セルに書き込みする前などに  Dim A As Variant  Dim B As Variant  A = TextBox1.Value  B = TextBox2.Value  If MsgBox("TextBox1: " & A & vbCrLf & _       "TextBox2: " & B & vbCrLf & _       "となりますが、よろしいですか?", vbInformation + vbOKCancel) = vbOK Then       Range("A1").Value = A       Range("A2").Value = B End If End Sub UserForm 間の場合は、直接のやり取りはしないで、標準モジュールを経由させます。標準モジュールに、Public 変数のみをおきます。UserFormのローカルモジュールのプロシージャには、変数の宣言をしません。それで、変数に値を代入させれば、その値は、残っています。そこから値を取り出すことが出来ます。 例: 'Option Explicit Public A As Variant Public B As Variant こうすることで、UserForm 間のデータをやり取りすることが可能です。