- ベストアンサー
セルの値が変化してもフォームの値が変わらない
現在 次のようにセルの値を取得して表示座ていますが これですと もちろんユーザーフォーム立ち上げ時に表示しますが セルの値が変わった時 反映しません ユーザーフォーム立ち上げ時以外にも セルに連動して フォームの値を変えれるには どの様にすればいいでしょうか 初心者ですがよろしくお願い致します Private Sub UserForm_Initialize() 'ユーザーフォーム立ち上げ時に表示 TextBox1.Value = Range("N750").Value End Sub
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
相互連携ではなくてセルの変化のみテキストボックスに反映させたいということですね Private Sub UserForm_Initialize() 'ユーザーフォーム立ち上げ時に表示 TextBox1.Value = Range("N750").Value End Sub この部分は残しておいて N750のセルのあるシートのシートモジュールに以下のコードを記載してみてください。 Range("B1,D1") は入力したらN750の表示が変化するセルを指定してください。 例はN750が =B1&D1 になっていてB1もD1も入力することがあるといった場合の指定です。 Private Sub Worksheet_Change(ByVal Target As Range) If Application.Intersect(Target, Range("B1,D1")) Is Nothing Then Exit Sub End If Application.EnableEvents = False UserForm1.TextBox1 = Range("N750").Value Application.EnableEvents = True End Sub
その他の回答 (3)
- kkkkkm
- ベストアンサー率66% (1719/2589)
J7:J1001とB7:B1001の範囲で入力するのでしたら If Application.Intersect(Target, Range("B1,D1")) Is Nothing Then を If Application.Intersect(Target, Range("J7:J1001,B7:B1001")) Is Nothing Then に変更してみてください
- kkkkkm
- ベストアンサー率66% (1719/2589)
回答No.1の補足です。 セルの値をリアルタイムで変化させずにテキストボックスからフォーカスが離れたときにだけ変化するのでよければ 以下はいりません。 Private Sub TextBox1_Change() Range("N750").Value = TextBox1.Text End Sub
- kkkkkm
- ベストアンサー率66% (1719/2589)
Private Sub UserForm_Initialize() TextBox1.ControlSource = "N750" End Sub とするか、テキストボックスのプロパティで ControlSource のところに N750 としておくとセルに連動でテキストボックスの値が変化します。 また、テキストボックスの値を変化させた場合にセルも変化させたい場合は Private Sub TextBox1_Change() Range("N750").Value = TextBox1.Text End Sub
補足
TextBox1.ControlSource = "N750"に しますと N750に入っていた数式が消えてしまいます
お礼
補足
すいません N750には数式=SUMIFS(J7:J1001,B7:B1001,">="&S736,B7:B1001,"<="&S737) また S737 には =EOMONTH(TODAY(),0) S736 には =DATE(YEAR(TODAY()),MONTH(TODAY()),DAY(1)) が埋め込まれています この場合 どの様になるのでしょうか よろしくお願い致します。