'コンボボックスにリストを設定する---------------
'controls(オブジェクト名)を使う方法
'(方法1)===============================
Dim myCtrl As Control
Dim mycnt As Long
For Each myCtrl In Controls
If TypeName(myCtrl) = "ComboBox" Then
If myCtrl Then mycnt = mycnt + 1
End If
Next
MsgBox mycnt
'(方法2)================================
Dim y As Long
Dim mycnt As Long
For y = 1 To 5
Controls(ComboBox & y).AddItem (nms(i).Name)
Next
MsgBox mycnt
'----------------------------------------
Answer
Copyright (C) 2002.9.3 永井善王
そのせいでしょうね。標準モジュールに記述したい場合は、次のようにオブジェクト名を付けます。
'(方法1)===============================
Dim myCtrl As Control
Dim mycnt As Long
For Each myCtrl In UserForm1.Controls
If TypeName(myCtrl) = "Userform1.ComboBox" Then
mycnt = mycnt + 1
End If
Next
MsgBox mycnt
おそらく、6行目も上記のように修正が必要でしょう。 If myCtrl.Value Then は、トグルボタンがオンのものだけをカウントしています。
'(方法2)は詳しく見てないですが、 controls("combobox" & y).AddItem (nms(i).Name)と " が抜けているように思います。
'Comboboxの存在を確認--------------------------------------
Dim mycmb As MSForms.ComboBox
Dim myO As OLEObject, WS As Worksheet
Dim mycnt As Long
For Each WS In Worksheets
For Each myO In WS.OLEObjects
If myO.progID = "Forms.ComboBox.1" Then
mycnt = mycnt + 1
End If
Next
Next
MsgBox mycnt
'comboboxをオブジェクト変数へ------------------------------
Dim com(10) As Object
For i = 1 To mycnt
Set com(i) = Worksheets("Sheet1").OLEObjects("ComboBox" & i).Object
Next
'---------------------------------------------------------