#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 |
|||
|
Copyright © T'sWare All rights reserved |