0

ユーザーの詳細とユーザーの在庫を表示するために、3つのサブフォームを含むフォームを作成しました。フォームを使用すると、ユーザーは表示された詳細を更新できます。したがって、各サブフォームには「保存」ボタンと「元に戻す」ボタンがあります。親フォームに「すべてクリア」ボタンを作成して、3つのサブフォームすべてにあるすべての変更を元に戻そうとしています。

3つの「元に戻す」ボタンで使用されているのと同じコードを再入力したくないので、3つのボタンのオンクリック機能を利用する方法はありますか?

最初に1つのサブフォームで次のことを試しました。

Private Sub ClearAllParentForm_Click()
    Me.Subform1.Form.clearButton_Click
End Sub

ただし、フォームは代わりにサブフォームのbeforeupdateイベント(更新されたレコードを保存するようにユーザーに求めるメッセージボックス)を呼び出します。また、コードをMe.Subform1.Form.Undoに変更しようとしましたが、同じ問題が発生します。私が間違ったことをした場所はありますか、それとも私のコンセプトは間違っていますか?

申し訳ありませんが、Microsoft Access 2007の使用を開始したのはごく最近のことなので、いくつかのものとかなり混乱しています。

4

2 に答える 2

1

ボタンのクリックイベントとは別の3つのサブルーチンが必要です。各ボタンにそれぞれのサブルーチンまたは関数を呼び出させます。次に、1つのボタンで3つすべてを呼び出すことができます。

于 2012-05-23T14:07:30.370 に答える
0

@JeffOは正しいですが、私は彼が言ったことをもう少しガイダンスで拡張したいと思いました。

ワークシートモジュールに次のものがある場合:

Private Sub ClearButton_Click()
    'ClearButton code here.
End Sub

ClearButtonコードを一般モジュールのSubに移動する必要があります。したがって、新しいモジュールでは、次のものが必要です。

Sub clearbtn()
    'ClearButton code here.
End Sub

ここで、ワークシートモジュールに戻り、ボタンクリックでこのコードを1行で呼び出します。

Private Sub ClearButton_Click()
    Call clearbtn
End Sub

イベントトリガーにこれらの変更を加えると、コード内の他の場所でそれらを使用できるようになります。ここでの暗黙の教訓は、VBAの他の場所からイベントトリガーサブを呼び出すことはできないが、他のサブはイベントトリガー内から呼び出すことができるということです。

于 2012-05-23T14:30:12.320 に答える