プロが教えるわが家の防犯対策術!

表題の通りで、エクセルユーザーフォームにチェックボックスを作成し、そのCaptionにセルの値を入れたい場合、どのようにすればいいのでしょうか。
つまり、シートのセルの値が変われば、ユーザーフォームのチェックボックスの文字が変わっているようにしたいのです。
エクセル2003です。
よろしくお願い致します。

A 回答 (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の文字として表示します。
    • good
    • 1
この回答へのお礼

これです。
思い通りになりました。
ありがとうございました。

お礼日時:2009/03/12 10:54

セル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

シートのチェンジイベントで行なうとか?

この回答への補足

セルに値を入れた時には、その文字が入りました。
しかしその後、再度ユーザーフォームを開くと、文字が消えてしまいます。
セルの値が変更した場合にはその値がともなって変更し、セルの値を変更していない場合は、そのままの数字が残るようにしたいです。
いかがでしょう。

補足日時:2009/03/11 11:11
    • good
    • 0
この回答へのお礼

3人めの回答者の方の方法で、思い通りになりました。
おそらく私の質問のしかたがわかりにくかったのだと思います。
ごめんなさい。
標準モジュールやユーザーフォームはよく使うのですが、シートモジュールは使ったことがありません。
これから勉強してみます。
たまにエクセルの質問を投稿してます。
また何かあったら教えて下さい。
ありがとうございました。

お礼日時:2009/03/12 10:45

シートモジュールに記述します。


シートの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

この回答への補足

セルに値を入れた時には、その文字が入りました。
しかしその後、再度ユーザーフォームを開くと、文字が消えてしまいます。
セルの値が変更した場合にはその値がともなって変更し、セルの値を変更していない場合は、そのままの数字が残るようにしたいです。
いかがでしょう。

補足日時:2009/03/11 11:04
    • good
    • 0
この回答へのお礼

3人めの回答者の方の方法で、思い通りになりました。
おそらく私の質問のしかたがわかりにくかったのだと思います。
ごめんなさい。
標準モジュールやユーザーフォームはよく使うのですが、シートモジュールは使ったことがありません。
これから勉強してみます。
たまにエクセルの質問を投稿してます。
また何かあったら教えて下さい。
ありがとうございました。

お礼日時:2009/03/12 10:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A