記事の概要
自分の備忘録も兼ねて、気が向いたときに作成した関数を載せていきます
環境
- Excel2016
- Windows10
ユーザー定義関数
Public Function cntObjects(objName As String) As Long
Dim obj As Object
For Each obj In Sheet1.OLEObjects
If obj.Name Like "*" & objName & "*" Then
cntObjects = cntObjects + 1
End If
Next
End Function
補足
何をしているのかというと...
Sheet1の全てのオブジェクトを参照
→もしも、そのオブジェクト名にobjNameを含む場合
→cntObjectsを+1する
*今回は「Sheet1」を指定していますがここはご自身で変更してください。
*objNameには”TextBox”だの”OptionButton”だのを入れてください。
使用例
準備
開発タブ > 挿入 > ActiveXコントロール でCheckBoxを6つ挿入しました。
①CheckBoxの数をメッセージボックスに表示
Public Sub ex1()
MsgBox cntObjects("CheckBox")
End Sub
②チェックが入ったCheckBoxの数をメッセージボックスに表示
Public Sub ex2()
Dim i As Long
Dim cnt As Long
Dim buf As String
buf = "CheckBox"
For i = 1 To cntObjects(buf)
If Sheet1.OLEObjects(buf & i).Object.Value = True Then
cnt = cnt + 1
End If
Next i
MsgBox cnt
End Sub