#350 サブフォームの編集を取り消すボタンを付ける フォーム、VBA

これは「#349 編集を取り消すボタンを付ける」と基本的には同じですが、サブフォームに加えられた編集をメインフォーム上の[取消し]ボタンによって編集前の状態に戻すための方法です。


サブフォームに加えられた編集は、メインフォーム上の[取消し]ボタンをクリックした瞬間に確定して保存されてしまいます。これは、メインフォーム側にフォーカスが移動する(=サブフォームからフォーカスが外れる)ことによってサブフォームで更新処理が実行されてしまうという、Accessの特性によるものです。そのため、もはやこの時点ではサブフォームのUndoメソッドでは編集前の状態に戻すことができません。

そこで、DoCmdのRunCommandメソッドを使います。このメソッドは、[編集]メニューの[元に戻す]、キー操作ではCtrl+Zと同等の命令ですので、1回に限って直前の状態に戻すことができます。なお、これはデータの編集だけでなくさまざまな操作のアンドウになりますので、場合によっては編集内容をもう元に戻せなかったり、別の操作が元に戻されてしまう場合もあります。

Private Sub cmd取消し_Click()
'取消しボタンクリック時

  'サブフォームにフォーカス移動
  Me!顧客マスタ_sub.SetFocus
  
  '元に戻すコマンドが使えない状況のときは無視
  On Error Resume Next
  '元に戻すコマンドを実行
  DoCmd.RunCommand acCmdUndo

End Sub

| Index | Prev | Next |



T'sFactory
Accessで動く生産管理DB
Ureru Express
Webで使う販売顧客管理
Access開発&アドバイス
DB開発やテクニカルアドバイス
Copyright © T'sWare All rights reserved