アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になっております。
Accessが無操作状態が5秒あったらフォームを閉じるようにしたいと考え、公開されているコードを参考に下記のようにしました。

:::::::::::::::::::::::::::::::::::::

1  Option Compare Database
2  Option Explicit
3
4  Dim sigStart1 As Single
5  Dim sigStart2 As Single
------------------------------------------------------------------------------------
6  Private Sub Form_Load()
7
8  TimerInterval = 1000
9  sigStart1 = Timer
10
11  End Sub
------------------------------------------------------------------------------------
12  Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
13
14  sigStart2 = Timer
15
16  End Sub
-------------------------------------------------------------------------------------
17  Private Sub Form_Timer()
18
19  Dim sigStop As Single
20  Dim IngTimer As Long
21
22  Me.KeyPreview = True
23  sigStop = Timer
24
25   If sigStart2 <> 0 Then
26     IngTimer = Fix(sigStop - sigStart2)
27   Else
28     IngTimer = Fix(sigStop - sigStart1)
29   End If
30
31   If IngTimer >= 5 Then
32     DoCmd.Close
33   End If
34
35  End Sub
-------------------------------------------------------------------------------------

上記のコードで閉じることはできるのですが、警告なしに急に閉じてしまうため、
警告のメッセージを出せるように改良したいです。
そこで31~33行目を次のようにしました。

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

If InfTimer >=5 Then

Dim res As vbMegBoxResult
res = MsgBoxres("作業を継続しますか?", vbYesNo + vbInformation)

If res = vbYes Then
MsgBox "OK"
Else
DoCmd.Close
End If

End If

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

警告は出ますが、メッセージボックスのYesNoを選択が必要になり、目的から外れてしまいました。
また、Yseを選択するとそれ以降連続してメッセージボックスが表示されてしまいます。
自分なりに調べ「Popup」を使ってみましたが、うまく出来ず断念しました。

現状説明が大変長くなってしまい申し訳ありませんが、教えていただきたいのは下記の2点です。

① メッセージボックスのように警告を出し、かつ無操作状態が継続した場合は、
  自動でフォームを閉じる方法
② ①の警告で「Yes(継続)」を選択した場合、また無操作状態が継続するまで
  メッセージボックスがでない方法

お手数をおかけしますが、何卒ご教示のほどよろしくお願い申し上げます。

A 回答 (4件)

① メッセージボックスのようなフォームを別途作って、そちらから操作がない場合は元フォームを閉じ、自分自身を閉じるとか


② ①のフォームがYESで閉じられた後に、元フォーム側でチェックに入る前にsigStart2 = Timer とすればよいのでは?
    • good
    • 0
この回答へのお礼

ShowMeHowさん、回答ありがとうございます。
①は問題なく作成できましたが、②で行き詰ってしまいました。
よろしければコードを教えていただけないでしょうか。
お手数をおかけしますが、よろしくお願い申し上げます。

お礼日時:2020/03/11 10:16

新たに作ったフォーム側で、自動的に閉じるなら、こちらでもタイマー処理したほうが良いかも。

    • good
    • 0
この回答へのお礼

ShowMeHowさん、返信ありがとうございます。
新しいフォーム側でもタイマー処理したらうまくいきました。
教えてくださりありがとうございました。

お礼日時:2020/03/12 13:08

vbaよくわからんけど、、、


31 If IngTimer >= 5 Then frmxxx.show vbmodal
32 sigStart2 = Timer 
33
として、新たに作ったfrmxxx側で、、、

OK button click時に
docmd.close

CANCEL button click時に
me.close

とするとか
    • good
    • 0

メッセージボックスにするんでなく、チェックボックスにしたら?



オンなら閉じればいい。

意味わかる?
    • good
    • 0
この回答へのお礼

くんこばさん、回答ありがとうございます。
検討してみます。

お礼日時:2020/03/11 10:15

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A