これは私が初めてこのサイトに投稿したもので、助けていただければ幸いです。私はmrexcelフォーラムのメンバーであり、そこの偉大な人々から多くの助けを受けたが、私の質問に対する答えを見つけることができなかった。職場では、ユーザーフォームを使用してさまざまなワークシートにデータを入力できるワークブックを作成しました。私はできるだけ多くの「ユーザーエラー」をできるだけ排除しようとすると、これをユーザーフレンドリーにしようとしています。私が避けようとしている問題の1つは、シフトが終わったときにシートを閉じるのを忘れてしまい、他のユーザーがファイルを開いているときにブックが読み取り専用になっているために全員がロックアウトされることです。だから、私は40分の非アクティブ後にブックを保存して閉じるコードがあります。これが引き起こしている1つの問題(それは非常に小さな問題ですが、私の従業員の1人が私に持ち込んだ問題です)は、たまには偶然にユーザーがデータをユーザーフォームのすぐ近くに入力することですその40分の非活動、およびデータを提出する機会を得る前に、ワークブックが閉じます。誰かが自分のコードを変更する手助けをすることができれば、40分の無活動時間に達したときに、保存して閉じる前に、userformが開いていると判断し、そのアクションがあれば取り消すことができますか?ここに私が持っているコードがあります。私が得ることができるすべてのおかげで、ありがとう。VBAユーザーフォームが開いていない限り、非アクティブの時間後にブックを保存して閉じる方法は?
はThisWorkbookでDim CloseTime As Date
Sub TimeSetting()
CloseTime = Now + TimeValue("00:40:00")
On Error Resume Next
Application.OnTime EarliestTime:=CloseTime, _
Procedure:="SavedAndClose", Schedule:=True
End Sub
Sub TimeStop()
On Error Resume Next
Application.OnTime EarliestTime:=CloseTime, _
Procedure:="SavedAndClose", Schedule:=False
End Sub
Sub SavedAndClose()
ActiveWorkbook.Close Savechanges:=True
End Sub
:モジュール1では
Private Sub Workbook_Open()
Call TimeSetting
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call TimeStop
End Sub
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Call TimeStop
Call TimeSetting
End Sub
私は何度も物事を分析し、単純な解決法を完全に見過ごしていることを私に驚かせます。どうもありがとうございました。 –