[[20070228103207]] 『VBA:CheckBoxのTrueを検出する方法』(masabou5) ページの最後に飛ぶ

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

 

『VBA:CheckBoxのTrueを検出する方法』(masabou5)

 シート上にCheckBoxが500個ほど配置されていて、A列に名簿が表にしてあります。
 CheckBoxにチェックが付いているものだけを検出し、B列に表示させたいと思っています。
 素人的には、

 If CheckBox1 Then Range("B1") = Range("A1")
 If CheckBox2 Then Range("B2") = Range("A2")

 などのように500個作ればいいと思いますが、これもなかなか大変なので、
 もっとよい方法はありませんでしようか?
 もし、ありましたらお教え下さい。よろしくお願いします。


 ループさせてはいかがでしょう?

 Option Explicit

 Sub chk()
  Dim obj As OLEObject
  Dim i As Long
   For Each obj In Worksheets(1).OLEObjects
      i = i + 1
     If TypeOf obj.Object Is MSForms.CheckBox Then
        If obj.Object.Value = True Then 処理
     End If
   Next
 End Sub
 (MARBIN)

 なお、↑はコントロールツールボックスのチェックボックスである、という
 前提です。
 (MARBIN)

 MARBINさん、ありがとうございました。
 処理の仕方が今ひとつですが、もう少し研究してみます。(masabou5)

 「処理」の方は、
 Offset
 を使うとうまくいくかもしれませんね。
 (MARBIN)

 いろいろ研究してみましたが、処理のところがどうしても出来ませんでした。
 すみません、一例を教えていだけませんか?
 尚、i=i+1のところも分かりませんでした。(masabou5)

 "処理"はこんなかんじです。

 ActiveSheet.Range("B1").Offset(i).Value = ActiveSheet.Range("A1").Offset(i).Value

 >尚、i=i+1のところも分かりませんでした。
  今回は不要でした。削除忘れです。
 失礼しました。
 (MARBIN)

 MARBINさん、早速ありがとうございました。
 しかし、次のようにしてみましたが、CheckBoxのTrue、Falseにかかわらず、
 すべての名簿が出てきました。
 どうしてでしようか?すみません、もう一度教えて下さい。(masabou5)

Dim obj As OLEObject
Dim i As Long

   For Each obj In Worksheets(2).OLEObjects

    For i = 1 To 500
     If TypeOf obj.Object Is MSForms.CheckBox Then
        If obj.Object.Value = True Then

            Range("B1").Offset(i).Value = Range("A1").Offset(i).Value

        End If

     End If
   Next
   Next

 For Eachループの中にFor Nextループを入れていてはそうでしょう。
 MARBINさん忘れものを取り戻して来ますた。
 (ROUGE)
'----
Dim obj As OLEObject
Dim i As Long
i = 0
For Each obj In Worksheets(2).OLEObjects
    If TypeOf obj.Object Is MSForms.CheckBox Then
        If obj.Object.Value = True Then
            Range("B1").Offset(i).Value = Range("A1").Offset(i).Value
        End If
    End If

i = i + 1

Next

 ROUGEさん、フォローありがとうございます。
 masabou5さん、ごめんなさい。
 どうも最近ボケボケです。
 春のせいかな?
 私はどこ?ここはだれ?
 (MARBIN)

 ROUGEさん、ありがとうございました。
 完璧に出来るようになりました。もう少しOffsetの使い方を勉強します。

 >masabou5さん、ごめんなさい。
 そうおっしゃらないで下さい。お世話になりました。感謝いたします。
 エクセルの学校の回答者の先生方の素晴らしさがよく分かります。
 「エクセルの学校」バンザイ!・・・管理者のkazuさん、ありがとうございます。


コメント返信:

[ 一覧(最新更新順) ]


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