[[20110228200052]] 『チェックボックスのコードをコンパクトにしたいで』(スサノオ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『チェックボックスのコードをコンパクトにしたいです』(スサノオ)
 
 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


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.