[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『チェックボックスのコードをコンパクトにしたいです』(スサノオ)
お世話になります。
チェックボックスのコードを本をお手本に作成しましたが
もっとコンパクトに記述する方法がありましたら
アドバイスをよろしくお願いします。
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.