| 
    
     |  | ▼sarai さん: こんばんは。
 
 >ですがちょっと悔しいですね、、、なぜ勝手にコンボボックスが変わってしまうか、あるいはどのプロパティが変えられてるかが分かりませんので・・・
 
 再現手順
 
 ・新規ブックを用意してください。
 尚、上記の新規ブックには、必ず、Sheet1とSheet2という名前のシートは
 存在することとします。
 
 ・標準モジュールに以下のコード
 
 '========================================================
 
 Sub 設定()
 Dim olecomb As OLEObject
 Dim r As Range
 With Worksheets("sheet2")
 With .Range("a1:b5")
 .Formula = Array("=row()", "=char(row()+64)")
 .Value = .Value
 End With
 End With
 With Worksheets("sheet1")
 Set r = .Range("b5:d6")
 With .OLEObjects.Add(ClassType:="Forms.ComboBox.1", Link:=False, _
 DisplayAsIcon:=False, Left:=r.Left, Top:=r.Top, Width:=r.Width, Height:= _
 r.Height)
 .Object.Style = 2
 .ListFillRange = "sheet2!a1:b5"
 .Object.ColumnCount = 2
 .Object.BoundColumn = 2
 End With
 End With
 ThisWorkbook.SaveAs "D:\My Documents\cmbsample.xls"
 '           適当な名前で保存します。
 End Sub
 
 
 上記のコードを実行してください。
 
 Sheet1に「コントロールツールボックス」にあるコンボボックスが
 配置され、メンバーはSheet2!A1:B5が設定されます。
 
 ・次にSheet1のモジュールに
 
 '============================================================
 Option Explicit
 '============================================================
 Private Sub ComboBox1_Change()
 MsgBox ComboBox1.Value
 End Sub
 
 上記のコードを追加して 上書き保存を行ってください。
 
 ・Sheet1のコンボボックスは、いまだ入力されていません。
 
 ・コンボボックスから適当な値を選択してください。
 ・Combobox1_Changeイベントが作動し、Combobox1.Valueの値が表示されます。
 (AとかBとか・・・)
 
 ・次にこのブックを閉じる操作を行ってください。
 ・変更の保存の有無を聞いてきますから、「いいえ」を選択してください。
 
 ・ここでChangeイベントが発生します。
 
 
 いかがですか?
 ご自分が作成したコンボボックスと比べてみてください。
 上記の例では、BoundColumnの変更が起因しています。
 
 
 |  |