Microsoft Access 掲示板

OLEオブジェクトのアプリが閉じたときに、連結オブジェクトフレームのLockedをTrueにしたい。 / 3

10 コメント
views
4 フォロー
3
hiroton 2023/07/03 (月) 09:17:25 修正 9d659@f966d

いろいろ弄ってたんですが連結オブジェクトフレームはなかなか不思議な動きをするんですねぇ
外部からのドラッグアンドドロップが問題になるなら使用可能プロパティを使うのも手だと思います

使用可能 |いいえ
編集ロック|いいえ

使用可能プロパティを「いいえ」にしてるので編集は適当にコマンドボタンを配置してVBAから操作します

Private Sub コマンド0_DblClick(Cancel As Integer)
    '//連結オブジェクトフレームはEnabled = Trueにしないと編集できない(っぽい)
    Me!xlsData.Enabled = True
    Me!xlsData.Action = acOLEActivate
End Sub

Private Sub xlsData_Updated(Code As Integer)
    '//編集の為Enabled = TrueにしたのをFalseに戻す
    '//ベストなイベント発生がないのでここで無理やり変更をかける
    On Error Resume Next
    Me!xlsData.Enabled = False
    On Error GoTo 0

    '//フォーカスを持っているフィールドなのになぜEnabled = Falseできるのか謎
    '//更新時イベント自体は複数回発生するが固定回数のようなのでカウントして対応したほうが丁寧だけど面倒なのでエラーは無視でいいんじゃないかな
End Sub

コマンドボタンの透明プロパティを「はい」にして、連結オブジェクトフレームにぴったり重ね合わせて前面に配置すればそれっぽくなると思います

なお、コードは「なぜか動く」系の怪しさ満点のコードなので十分に動作検証を行ってください


※プログラミング能力を疑うコードだったのでコメントを追加しました
より一層、公開したのを後悔するようなコードになった気がします

通報 ...