[[20060606214654]] 『チェックボックスのカウント』(あこ) ページの最後に飛ぶ

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

 

『チェックボックスのカウント』(あこ)
 先日、Frameの中のCheckBoxの数え方について、
 教えていただき、その後も、こちらの検索で疑問を解決しながら、
 無事、作りたかったマクロは完成しました。ありがとうございました。

 さて、今回は、このマクロに、マイナーな改良をしておこうと着手したものの
 行き詰ってしまったのでご相談させてください。

 UserForm1に、Frameが1〜6まで。CheckBoxが30個配置されています。
 Frameは作業内容、CheckBoxは作業員です。
 各Frameには、CheckBoxが連番ではなく、バラバラに入っています。
 人員の増減の度に、入れ替えをするからです。

 CheckBoxのValueを確認し、マクロで動かすので、
 今は、For i = 1 to 30 で、設定できていますが、
 この、「30」の所を、変数にしようと考えました。

 そこで、

  Dim mybox as As integer
   mybox = Userform1.Checkbox.Count
    For i = 1 to mybox

 としてみましたが、動かず。

 たしかに、Worksheetを数えるときは、
  変数 = Worksheets.count
 というように、Worksheetに「s」をつけるのですが、
 CheckBoxでは「s」をつけません。

 それで、コントロールを使うのではないか?と思ったのですが、

   mybox = UserForm1.Controls("CheckBox").count

 でも、動きませんでした。 

 根本的に、基本のところで分かっていないと思うのですが、
 UserForm1の上のCheckBoxの数を変数にするための考え方を
 教えていただけませんか。

 よろしくお願いいたします。


 またもや直接拾うものでなくて恐縮ですが、全てのControlの数から、
 フレームやトグルボタンなど増減しない分の数を引くって方法は使えませんか。
 
Item_Count = UserForm1.Controls.Count
CheckBox_Count = Item_Count - 5 'チェックボックス以外が5個の場合

 これがダメなら、全部の名前をチェックしていく。
Item_Count = UserForm1.Controls.Count
For i = 0 To Item_Count - 1
    If Left(UserForm1.Controls.Item(i).Name, 8) = "CheckBox" Then
        CheckBox_Count = CheckBox_Count + 1
    End If
Next i

 (川野鮎太郎)


 はずしていたらごめんなさい。

 CheckboxesのコレクションにCount propertyはありませんでしたっけ?

 (seiya)

 川野さん、ありがとうございます。
 前者の、UserFormにあるボタン関係全ての数から引いていくという方法にしました。

 CheckBoxなど、UserFormに配置されるアイテムは、
 オブジェクトにはなりえないという理解で正しいでしょうか。
 それとも、オブジェクトになれるアイテムもあるのですか。
 (質問の的が外れている気がしないこともなく、恐縮です。)

 seiyaさんの仰っている「CheckBoxコレクション」のCountPropertyについても
 教えていただきたいです。


コメント返信:

[ 一覧(最新更新順) ]


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