1. m0ka

    No comment

    m0ka
Changes in body
Source | HTML | Preview
@@ -1,76 +1,76 @@
-#記事の概要
+#記事の<概要>
自分の備忘録も兼ねて、気が向いたときに作成した関数を載せていきます:pencil2:
#環境
・Excel2016
・Windows10
#ユーザー定義関数
```vb
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つ挿入しました。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/241380/2281be9a-ffe0-84ed-bc96-82c995b5735e.png)
######①CheckBoxの数をメッセージボックスに表示
```vb
Public Sub ex1()
MsgBox cntObjects("CheckBox")
End Sub
```
![image.png](https://qiita-image-store.s3.amazonaws.com/0/241380/61e69878-8a21-fe95-8d05-23aafc710c3a.png)
######②チェックが入ったCheckBoxの数をメッセージボックスに表示
```vb
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
```
![image.png](https://qiita-image-store.s3.amazonaws.com/0/241380/285b2c2a-aac3-1978-6467-41ed5d1f1a6d.png)
@Primar