- ベストアンサー
エクセルユーザーフォームのチェックボックスのCaptionにセルの値を入れたい。
表題の通りで、エクセルユーザーフォームにチェックボックスを作成し、そのCaptionにセルの値を入れたい場合、どのようにすればいいのでしょうか。 つまり、シートのセルの値が変われば、ユーザーフォームのチェックボックスの文字が変わっているようにしたいのです。 エクセル2003です。 よろしくお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
あまり詳しくないのですが... 間違っていたら、ごめんなさい。 UserFormをLoadしたときに発生するイベント、UserForm_Initializeとして、 Private Sub UserForm_Initialize() UserForm1.CheckBox1.Caption = Range("A1").Value End Sub ではダメですか? セル"A1"をUserForm1.CheckBox1.Captionの対象としました。 ※これだと、Sheetが変わると、Sheetごとの"A1"の値をCheckBox1.Captionの文字として表示します。
その他の回答 (2)
- n-jun
- ベストアンサー率33% (959/2873)
セルA1が対象とすると、 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address(0, 0) <> "A1" Then Exit Sub UserForm1.CheckBox1.Caption = Target.Value End Sub シートのチェンジイベントで行なうとか?
お礼
3人めの回答者の方の方法で、思い通りになりました。 おそらく私の質問のしかたがわかりにくかったのだと思います。 ごめんなさい。 標準モジュールやユーザーフォームはよく使うのですが、シートモジュールは使ったことがありません。 これから勉強してみます。 たまにエクセルの質問を投稿してます。 また何かあったら教えて下さい。 ありがとうございました。
補足
セルに値を入れた時には、その文字が入りました。 しかしその後、再度ユーザーフォームを開くと、文字が消えてしまいます。 セルの値が変更した場合にはその値がともなって変更し、セルの値を変更していない場合は、そのままの数字が残るようにしたいです。 いかがでしょう。
- marbin
- ベストアンサー率27% (636/2290)
シートモジュールに記述します。 シートのChangeイベントを使います。 TagretをA1セルに限定しています。 Private Sub Worksheet_Change(ByVal Target As Range) 'A1セル以外が変更されたら何もしない If Intersect(Target, Range("A1")) Is Nothing Then Exit Sub UserForm1.CheckBox1.Caption = Target.Value End Sub
お礼
3人めの回答者の方の方法で、思い通りになりました。 おそらく私の質問のしかたがわかりにくかったのだと思います。 ごめんなさい。 標準モジュールやユーザーフォームはよく使うのですが、シートモジュールは使ったことがありません。 これから勉強してみます。 たまにエクセルの質問を投稿してます。 また何かあったら教えて下さい。 ありがとうございました。
補足
セルに値を入れた時には、その文字が入りました。 しかしその後、再度ユーザーフォームを開くと、文字が消えてしまいます。 セルの値が変更した場合にはその値がともなって変更し、セルの値を変更していない場合は、そのままの数字が残るようにしたいです。 いかがでしょう。
お礼
これです。 思い通りになりました。 ありがとうございました。