Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

accessのVBAを使ってこんな ことできますか?

692 views
Skip to first unread message

YHN

unread,
Jun 5, 1999, 3:00:00 AM6/5/99
to
フォーム上の「担当者」という項目に上書き入力し、ENTERで確定する時か
他のフィールドに移動するときに、「更新しますか?」というメッセージを表示さ
せ、
「OK」ならそのまま移動し、「いいえ」なら入力前に戻す

というプログラムを書きたいと思います。

イベントプロシージャーで以下のように書いたのですがうまくいきません。

---------------------------------------------
Private Sub 担当者_AfterUpdate()

Dim A As Integer
Dim s
Dim t

A = MsgBox("更新しますか?",1)
If A = 1 Then
Else
s=t
 s= Me![担当者]

End If

End Sub

------------------------------------
Private Sub 担当者_BeforeUpdate(Cancel As Integer)

Dim t
t = Me![担当者]

End Sub
-------------------------------------
上段と下段がありますが、
下段は「レコード変更前」に「担当者」のレコード内容をtに保管し、
上段は入力確定後メッセージが出て「OK」ならそのまま
「いいえ」ならsに保管されているtを代入し、そのsを「担当者」とする。

という内容です。

しかし、これでは、メッセージは聞いてくるもののどちらで答えても
レコードは上書き後のままで他のフィールドにとびます。

どなたか教えていただけないでしょうか?

宜しくお願い致します。


YHN

Kouichi Noda

unread,
Jun 6, 1999, 3:00:00 AM6/6/99
to
更新前処理に

A = MsgBox("更新しますか?",1)
If A = 1 Then
Else
Me!担当者.Undo
Cancel = True
End If
でどうでしょう。

Akinori Suzuki

unread,
Jun 9, 1999, 3:00:00 AM6/9/99
to
はじめまして鈴木章令といいます。

カーソルを移動したくないならもんでどうでしょう?

Private Sub 担当者_BeforeUpdate(Cancel As Integer)

Dim A As Integer

A = MsgBox("更新しますか?", 1)
If A <> 1 Then
DoCmd.CancelEvent
SendKeys ("{ESC}")
End If

End Sub

YHN

unread,
Jun 10, 1999, 3:00:00 AM6/10/99
to

Kouichi Noda <knod...@mail.hinocatv.ne.jp> wrote in message
news:7jdcm8$8m7$1...@hictsvr.hinocatv.ne.jp...

ありがとうございます。うまくいきました。

ところで、「Cancel = True」の役割がわからないので、これだけ外してみました。
そして、メッセージに対し、「キャンセル」すると、「担当者」項目はアンドゥされ
ずに
次の項目に移動します。ヘルプでは「Cancel = True」をBeforeUpdate イベントの
キャンセルとかいてますが、意味が分かりません。
この場合どういう役割を果たしているのでしょうか?

YHN

unread,
Jun 10, 1999, 3:00:00 AM6/10/99
to

Akinori Suzuki <suz...@mb.aikis.or.jp> wrote in message
news:375E3A4D...@mb.aikis.or.jp...

If A <> 1 ThenのところでIf A = 1 Thenだとうまくいきました。
「OK」と答えた場合、カーソルは移動します。

DoCmd.CancelEventはアンドゥみたいなものですか?
SendKeys ("{ESC}")の役割は何でしょうか?

Kouichi Noda

unread,
Jun 10, 1999, 3:00:00 AM6/10/99
to
Cancel=True
を入れると、以降のイベントがすべてキャンセルされます。
更新後処理、フォーカス喪失時、フォーカス喪失後が実行されません。
したがって、フォーカスが次のテキストボックスに移動しません。
0 new messages