Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


36409 / 76732 ←次へ | 前へ→

【45505】Re:終了時のイベント
発言  ichinose  - 06/12/27(水) 21:38 -

引用なし
パスワード
   >私のプログラムの動作と同じです。
>ただ違いはBoundColumnのデフォルトで、
>
>ichinoseさんのプログラム
> デフォルト:2 →Changeイベント発生
> プロパティを1に変更 →発生せず
>私のプログラム
> デフォルト:1 →Changeイベント発生
> プロパティを2に変更 →発生せず
>
>この違いは何でしょうか。
>と言いますかそれ以前に、なぜBoundColumnが終了時に変更されて
>しまうのかが分かりません。
ん?終了時に
BoundColumnの値が変更されてしまうわけではありませんよ!!
私が提示した例では、BoundColumnの規定値(1)を2に変更したことが
影響したと申し上げているのですよ!!

>
>現状、Booさんに教えていただいたフラグ方式でとりあえず
>動いていますので急ぎではないのですが、参考までに教えて
>頂ければ嬉しいです。
回避方法は、フラグで判断するが良いと思います。


原因はバグだと私は思っています・・・が、
さて、MS社は何て言っているのかなあ?


再度、新規ブックの標準モジュールに
(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 = 1
     .Object.TextColumn = 2
     End With
    End With
  ThisWorkbook.SaveAs "D:\My Documents\cmbsample.xls"
  '           適当な名前で保存します。
End Sub


として、設定を実行してください。


さらにSheet1のモジュールに

'==================================================================
Private Sub ComboBox1_Change()
  MsgBox "ComboBox1.Value = " & ComboBox1.Value & vbCrLf & _
      "ComboBox1.Text = " & ComboBox1.Text
     
End Sub


として、上書き保存を行ってください。


前回と同じようにコンボボックスを適当に選択した後、
ブックを閉じる操作を行ってください。
保存の有無で「いいえ」を選択します。

いかがですか?
また、Changeイベントが発生しましたね?

しかも、ComboBox1.value と 
Textプロパティが同じ値を表示していませんか?

原因はこれだと思っています。
最初の例も今回の例も ComboboxのValueプロパティとTextプロパティが
違う値を持つような設定になっています。
ブックを閉じる時に何故かこのValueとTextを同じにしようとする処理が
なされています。

Changeイベントが発生するのはこのためです。
値が変更されていますからね!!

バグだと思うでしょう??

本当は、この再現手順をsarai さんに記述してほしかったのです。
何が原因か分からなければ、私ならコンボボックスのプロパティは、
プロパティウインドウに出ているプロパティの値は全て記述します。
当然、コードも・・・。

一人でも多くの方に再現しもらう最大限の努力(記述)をしてください。

この手の問題は、再現できなければお話になりません。
(今回は、解決策は見つかりましたけどね!!)

逆に再現さえしてもらえば、色んな意見がもらえますよね!!

次回は是非、そういう記述を心がけてください。
0 hits

【45491】終了時のイベント sarai 06/12/27(水) 11:56 質問
【45492】Re:終了時のイベント Statis 06/12/27(水) 12:50 発言
【45493】Re:終了時のイベント sarai 06/12/27(水) 13:08 発言
【45494】Re:終了時のイベント Boo 06/12/27(水) 13:12 発言
【45496】Re:終了時のイベント sarai 06/12/27(水) 14:10 お礼
【45503】Re:終了時のイベント ichinose 06/12/27(水) 18:46 発言
【45504】Re:終了時のイベント sarai 06/12/27(水) 20:35 お礼
【45505】Re:終了時のイベント ichinose 06/12/27(水) 21:38 発言

36409 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free