Storing the location of the checkboxes as you loop through them will help place the new one.
Sub test()
Dim oneShape As Shape
Dim maxTop As Single
Dim Exists As Boolean
Dim sh As Worksheet
For Each sh In ThisWorkbook.Worksheets
maxTop = 0: Exists = False
For Each oneShape In sh.Shapes
If oneShape.Type = msoFormControl Then
If oneShape.FormControlType = xlCheckBox Then
maxTop = WorksheetFunction.Max(maxTop, oneShape.Top + oneShape.Height)
If oneShape.Name = oneShape.Parent.Name Then
Exists = True
End If
End If
End If
Next oneShape
If Exists Then
Rem all good
Else
With sh.CheckBoxes.Add(sh.Range("H1").Left, maxTop, 100, 20)
.Name = sh.Name
.Caption = sh.Name
End With
End If
Next sh
End Sub