dポイントプレゼントキャンペーン実施中!

テーブルと結びついたフォームがあります。
ボタンを押すと、ある処理をします。
その処理がエラーだった場合、フォームを空にしたいと思っています。
どうすればいいのでしょうか?

マクロを使った場合、条件抽出でありえないデータをすればいいと思います。
しかし、今回はVBAを使って作っています。
まだVBAがよくわからないので、どうしていいかわかりません。
よろしくお願いします。

A 回答 (5件)

マクロを作れるなら、


そのマクロをVBAに変換してみたらいかが?

ツール→マクロ→マクロをVisualBasicに変換
だったかな。

その方が勉強になると思いますよ。



私なら?
Docmd.GotoRecord , , acNewRec
で、新規データに飛ばしますかね。
    • good
    • 0
この回答へのお礼

ありがとうございます。

>ツール→マクロ→マクロをVisualBasicに変換

それも考えたのですが・・・
アクセスは久しぶりなので、マクロのやり方があやふやです。
同じ一からやるなら、VBAの方がいいかな~と思っています。

>Docmd.GotoRecord , , acNewRec

やってみたのですが、「指定したレコードに移動できません」と出ます。

もしかして・・・
フォームを開いたときに、何もない状態にしたいので、フォームのプロパティの「データ入力用」を「はい」にしています。
これが原因でしょうか?
でも、いいえにすると、全データが表示されるし。
何かいい方法は無いでしょうか?

お礼日時:2012/05/22 00:24

No2 です。



> とりあえず、Me.Undoをいれてみました。
> すると、「Meキーワードの使用方法が不正です。」と怒られてしまいました。

処理は、標準モジュールに書かれている、ということですね。

「Me 」 がフォーム やレポート の クラスモジュールに書かれている場合は
自分自身のフォーム(レポート)を表します。

いろんな書き方がありますが

  Forms("フォーム名").Undo
  Screen.ActiveForm.Undo

とか。

後者は、ポップアップウィンドウでは NG です。
    • good
    • 0
この回答へのお礼

ありがとうございます。
エラーはでなくなりました。
しかし、入力するデータが正しくないので、テーブルに入れていないのでUNDOをしても意味が無いようです。
なんとなく、refreshをしてみました。(野生の感なので根拠はありません)
これもだめでした。
改めて、フォームを開いたときの状態にしたいのですが・・・
どうすればいいのでしょうか?

お礼日時:2012/05/24 19:11

1,3ですw


すいませんが、書き忘れです;;


当方、access2000でしか動作確認しておりません。
ヴァージョンが違うと、もしかしたら動かないかもです;;
    • good
    • 0

1です。



なるほど、入力用フォームなんですね。
入力中のレコードを「削除する」文です。
一応、フォームは空になってくれます。


Private Sub ボタン_Click()
On Error GoTo Err_ボタン_Click

'警告メッセージ非表示
Docmd.SetWarnings False

'入力中のレコードを選択して
DoCmd.DoMenuItem acFormBar, acEditMenu, acSelectRecord, , acMenuVer70
'削除します。
DoCmd.DoMenuItem acformber, acEditMenu, acDelete, , acMenuVer70

'修了処理
Exit_ボタン_Click:
'警告メッセージ表示
Docmd.SetWarnings True
Exit Sub

'エラー処理
Err_ボタン_Click:
MsgBox Err.Description
Resume Exit_ボタン_Click

End Sub


ちょっと強引ですが、こんな感じですか。
    • good
    • 0
この回答へのお礼

ありがとうざいます。
書いていただいたコードですが、私が知らない内容が多数あるので、また試していません。
一個一個調べてから試そうと思います。

それより、質問する時に、「ある処理」と推理小説の犯人を隠すような書き方をしたので、質問内容がわかりにくくなっているようなので、改めて今回したい内容を書きます。

まず、データをコピーします。

それを、クリップボードから変数に入れます。(ボタンがありクリックすると変数にいれる処理をします)

それを正規表現で、必要なデータを抜き出します。

それをテーブルに入力します。

と言う流れです。

なぜ、入力用のフォームか?

フォームを開くと、今まで入力したデータすべてが表示されます。
私としては、クリップボードから入力したデータだけ表示させたかったです。
そこで、入力用にすると、今まで入力したデータが表示されませんでした。

(今、考え付いたのですが、別のテーブルを作ってデータがOKの場合、既存のテーブルにデータを追加して、新規に追加したテーブルを削除すれば、問題ないような気がしますが、なるべく手間は減らしたいとおもっています。)

ボタンを押すと、クリップボードからデータを読み込むのですが、ボタンを押す前は、前回読み込んだデータの一覧が表示されています。

読み込んだときに、読み込んだデータが正しくない場合、注意のダイアログを出して、OKボタンを押すと、前回入力したデータが表示されているのを消して、何もない状態にしたいと思っています。

ついでに、sql serverにデータを入れたいので ADOの使用を考えています。

これが今回したい内容です。

お礼日時:2012/05/23 01:51

> ボタンを押すと、ある処理をします。



どんな処理か、にも依りますが、
もしかすると、
新規入力中のレコードをキャンセルしたい、ということでしょうか?

でしたら、
 Me.Undo
とか。
    • good
    • 0
この回答へのお礼

ありがとうございます。
とりあえず、Me.Undoをいれてみました。
すると、「Meキーワードの使用方法が不正です。」と怒られてしまいました。

お礼日時:2012/05/23 01:25

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!