|
▼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の変更が起因しています。
|
|