- ベストアンサー
VBAでオプションボタンなどそれぞれの数を調べたい
エクセル97です。 ワークシート上にテキストボックス、コンボボックス、オプションボタン、ラベルが配置されています。 すべて、ツールバーのフォームから出したものです。 これら全部の数をもとめるには Sub TEST() Dim x As Integer x = ActiveSheet.Shape.Count MsgBox x End Sub これで出てきますし、テキストボックスならshapesをTextboxes、ラベルならLabelsに変えればいいのですが、オプションボタンやコンボボックスの場合、どう変えれば良いのかわかりません。教えてください。特にオプションボタンは数が多くて困っています。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#1です。 すみません。ワークシートに普通の図形があると、エラーになりますね。修正しました。 Sub test2() For Each obj In ActiveSheet.Shapes If obj.Type = msoFormControl Then Select Case obj.FormControlType Case xlButtonControl b = b + 1 Case xlCheckBox c = c + 1 Case xlDropDown g = g + 1 Case xlOptionButton o = o + 1 End Select End If Next obj MsgBox "ボタン " & b & Chr(13) & _ "チェックボックス " & c & Chr(13) & _ "コンボ(ドロップダウン)ボックス " & g & Chr(13) & _ "オプションボタン " & o End Sub
その他の回答 (2)
- ja7awu
- ベストアンサー率62% (292/464)
オプションボタンは、 x = ActiveSheet.OptionButtons.Count コンボボックスは、 x = ActiveSheet.DropDowns.Count で如何でしょうか。 これらは、隠しオブジェクトですね。 なお、提示のコードで x = ActiveSheet.Shape.Count は、 x = ActiveSheet.Shapes.Count でないでしょうか。
お礼
> 提示のコードで > x = ActiveSheet.Shape.Count は、 > x = ActiveSheet.Shapes.Count でないでしょうか。 すみません、その通りです。 ありがとうございました。
- sakenomo
- ベストアンサー率52% (35/67)
こんなかんじでしょうか。 詳しくは、FormControlTypeのヘルプをご覧ください。 Sub test() For Each obj In ActiveSheet.Shapes Select Case obj.FormControlType Case xlButtonControl b = b + 1 Case xlCheckBox c = c + 1 Case xlDropDown g = g + 1 Case xlOptionButton o = o + 1 End Select Next obj MsgBox "ボタン " & b & Chr(13) & _ "チェックボックス " & c & Chr(13) & _ "コンボ(ドロップダウン)ボックス " & g & Chr(13) & _ "オプションボタン " & o End Sub
お礼
ありがとうございました! 完璧です!! 助かりました。