『チェックボックスのコードをコンパクトにしたいです』(スサノオ)    Excel2003 お世話になります。 チェックボックスのコードを本をお手本に作成しましたが もっとコンパクトに記述する方法がありましたら アドバイスをよろしくお願いします。 If CheckBox1.Value = True Then Worksheets("aa").Range("G14").Value = "1" End If If CheckBox2.Value = True Then Worksheets("aa").Range("H14").Value = "1" End If If CheckBox3.Value = True Then Worksheets("aa").Range("I14").Value = "1" End If If CheckBox4.Value = True Then Worksheets("aa").Range("J14").Value = "1" End If If CheckBox5.Value = True Then Worksheets("aa").Range("K14").Value = "1" End If If CheckBox6.Value = True Then Worksheets("aa").Range("L14").Value = "1" End If If CheckBox7.Value = True Then Worksheets("aa").Range("M14").Value = "1" End If ---- 一例ですが、 With Worksheets("aa") If CheckBox1.Value = True Then .Range("G14").Value = "1" If CheckBox2.Value = True Then .Range("H14").Value = "1" If CheckBox3.Value = True Then .Range("I14").Value = "1" If CheckBox4.Value = True Then .Range("J14").Value = "1" If CheckBox5.Value = True Then .Range("K14").Value = "1" If CheckBox6.Value = True Then .Range("L14").Value = "1" If CheckBox7.Value = True Then .Range("M14").Value = "1" End With    (純丸)(o^-')b ---- ここでいうチェックボックスは、どこに配置したそれですか? ユーザーフォームですか? シートにですか? それによって、コードの記述方法が違ってくる場合があります。 ユーザーフォームに貼り付けられたそれなら、 Dim g0 As Long With Worksheets("aa") For g0 = 1 To 7 If Controls("checkbox" & g0).Value Then .Cells(14, g0 + 6).Value = "1" End If Next End With 当該シートに貼り付けられたものなら、 Dim g0 As Long With Me For g0 = 1 To 7 If .OLEObjects("checkbox" & g0).Object.Value Then .Cells(14, g0 + 6).Value = "1" End If Next End With こんなコードになりますね!! 記述をしっかりする事が大事ですよ!! ichinose 純丸 さま 早速ありがとうございました。 アドバイスいただいたコードを少し工夫し最終行を取得しデータを追記していく形にしてみました。 もしおかしいところがありましたらアドバイスよろしくお願いします。 Dim 最終行 As Integer 最終行 = Range("C65536").End(xlUp).Row With Worksheets("リスト") If CheckBox1.Value = True Then .Range("G" & 最終行 + 1).Value = "1" If CheckBox2.Value = True Then .Range("H" & 最終行 + 1).Value = "1" If CheckBox3.Value = True Then .Range("I" & 最終行 + 1).Value = "1" If CheckBox4.Value = True Then .Range("J" & 最終行 + 1).Value = "1" If CheckBox5.Value = True Then .Range("K" & 最終行 + 1).Value = "1" If CheckBox6.Value = True Then .Range("L" & 最終行 + 1).Value = "1" If CheckBox7.Value = True Then .Range("M" & 最終行 + 1).Value = "1" End With ichinose さま かなりコンパクトなコードをありがとうございました。 ちょっと分からない点がありますのでよろしければ教えていただけないでしょうか。 .Cells(14, g0 + 6).Value = "1" の部分で、仮にチェックボックス1〜7個それぞれ、セルに入力する値が異なる場合は どのようにすればよろしいでしょうか? (スサノオ) ---- >仮にチェックボックス1〜7個それぞれ、セルに入力する値が異なる場合はどのようにすればよろしいでしょうか? こういう質問をされるということは、For〜Nextステートメントを使った事がないということですか? だとしたら・・・、 http://journal.mycom.co.jp/articles/2009/07/30/vba/menu.html まず、↑ここでFor文をはじめ、繰り返し処理を行うためのステートメントの 使用方法を学んでください。 ここを読んでまだわからなければ、具体例をあげて再度、投稿してください。 プログラミングをする上で繰り返し処理は要ですから、理解してください それから >ここでいうチェックボックスは、どこに配置したそれですか? これは? ichinose