| 
    
     |  | ▼Blue さん: 
 どこのシートにあるのか、そうでうよね。
 その宣言をしてませんでした。
 
 しかし、宣言させたもののやはり
 「オブジェクトが必要」と怒られます。
 
 Private Sub Workbook_Open()
 
 Dim i As Integer, k As Integer
 Dim ws1 As Object, ws2 As Object, ws3 As Object
 
 ' シート名でコンボボックスのあるシートを特定
 Set ws1 = Worksheets("Sheet1")
 ws1.コンボ1.Clear
 For i = 1 To 12
 コンボ1.AddItem i
 Next
 
 
 Set ws2 = Worksheets("Sheet2")
 ws2.コンボ2.Clear
 For i = 1 To 12
 コンボ2.AddItem i
 Next
 
 Set ws3 = Worksheets("Sheet3")
 ws3.コンボ3.Clear
 
 For i = 1 To 12
 For k = 1 To 5
 コンボ3.AddItem i & "月/" & k
 Next
 Next
 
 End Sub
 
 何故なのでしょう。
 
 
 >どこのシートにあるコントロールなのか特定してあげないといけません。
 >
 >シート名がSheet1のシートにあるならば
 >
 >Worksheets("Sheet1").コンボ
 >
 >という風にしなければ。
 >
 >ちなみに
 >>  Dim i As Integer, k As Integer
 >>
 >>  For i = 1 To 12
 >>    コンボ1.AddItem i
 >>  Next
 >>
 >>  For i = 1 To 12
 >>    コンボ2.AddItem i
 >>  Next
 >>
 >>  For i = 1 To 12
 >>  For k = 1 To 5
 >>    コンボ3.AddItem i & "月/" & k
 >>  Next
 >>  Next
 >ならば
 >
 >Dim i As Integer, k As Integer
 >Dim ws As Object
 >
 >Set ws = Worksheets("Sheet1") ' シート名でコンボボックスのあるシートを特定
 >
 >ws.コンボ1.Clear
 >ws.コンボ2.Clear
 >ws.コンボ3.Clear
 >
 >For i = 1 To 12
 >  ws.コンボ1.AddItem i
 >  ws.コンボ2.AddItem i
 >  For k = 1 To 5
 >    ws.コンボ3.AddItem i & "月/" & k
 >  Next
 >Next
 >
 >とループをまとめれますね。
 
 
 |  |