アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセル97です。
ワークシート上にテキストボックス、コンボボックス、オプションボタン、ラベルが配置されています。
すべて、ツールバーのフォームから出したものです。
これら全部の数をもとめるには

Sub TEST()
Dim x As Integer
x = ActiveSheet.Shape.Count
MsgBox x
End Sub

これで出てきますし、テキストボックスならshapesをTextboxes、ラベルならLabelsに変えればいいのですが、オプションボタンやコンボボックスの場合、どう変えれば良いのかわかりません。教えてください。特にオプションボタンは数が多くて困っています。

A 回答 (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
    • good
    • 0
この回答へのお礼

ありがとうございました!
完璧です!!
助かりました。

お礼日時:2003/10/22 14:26

オプションボタンは、


x = ActiveSheet.OptionButtons.Count

コンボボックスは、
x = ActiveSheet.DropDowns.Count

で如何でしょうか。
これらは、隠しオブジェクトですね。

なお、提示のコードで
x = ActiveSheet.Shape.Count は、
x = ActiveSheet.Shapes.Count でないでしょうか。
    • good
    • 0
この回答へのお礼

> 提示のコードで
> x = ActiveSheet.Shape.Count は、
> x = ActiveSheet.Shapes.Count でないでしょうか。

すみません、その通りです。
ありがとうございました。

お礼日時:2003/10/22 14:27

こんなかんじでしょうか。


詳しくは、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
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています