さて、私が取り組んでいるワークブックは、最初に別のワークブックを更新してから保存することを許可せずに、USERLIST がそれを閉じるのを防ぐことになっています。これを行うボタンの追加を避けようとしており、ユーザーが RED X をクリックしてウィンドウを閉じたときに発生するようにしています。ただし、他の非ユーザーがアクセスして更新できない場合があります。更新および保存せずに終了するオプションを提供したいのですが、デフォルトで「保存しない」に設定されている「保存しますか」ダイアログボックスを無効にする方法がわかりません。コードを使用する場合
Application.DisplayAlerts = False
ActiveWorkbook.Close False
プロセス全体を再起動してループします。それを回避する方法はありますか?私の以前の質問から得たかもしれないように、基本的なコーディングを許してください。私はこのすべてを学んでいます。
Private Sub Workbook_BeforeClose(Cancel As Boolean)
**Response = MsgBox(prompt:="Are you sure you are ready to close for the day?", Buttons:=vbYesNo)
If Response = vbYes Then**
SWEEPER = ThisWorkbook.Worksheets("SET").Cells(1, Columns.Count).End(xlToLeft).Column
USER = Environ("username")
For i = 1 To SWEEPER
ThisWorkbook.Worksheets("SET").Activate
ThisWorkbook.Worksheets("SET").Cells(1, i).Select
If ThisWorkbook.Worksheets("SET").Cells(1, i).Value = USER Then
Set DATES = Workbooks.Open _
("test.xlsx")
ActiveWorkbook.Worksheets("DATES").Activate
Call Date_Updates
Exit Sub
End If
Next i
**Else
'Cancel = True
'MsgBox "Master Not Updated."
Response = MsgBox(prompt:="Are you trying to close without saving and updating?", Buttons:=vbYesNo)
If Response = vbYes Then
Application.DisplayAlerts = False
'ActiveWorkbook.Close False
Exit Sub
Else
Cancel = True
MsgBox "Master Not Updated."
End If
Exit Sub**
End If
MsgBox "You are not authorized to edit this document."
End Sub
Sub Date_Updates()
USER = Environ("username")
SWEEPER = Cells(1, Columns.Count).End(xlToLeft).Column
For i = 1 To SWEEPER
ActiveWorkbook.Worksheets("DATES").Cells(1, i).Select
STATE = ThisWorkbook.Worksheets("SET").Cells(Rows.Count, ActiveCell.Column).End(xlUp).Row
If ThisWorkbook.Worksheets("SET").Cells(1, i).Value = USER Then
For l = 2 To STATE
ActiveWorkbook.Worksheets("DATES").Cells(l, ActiveCell.Column).Activate
STName = ThisWorkbook.Worksheets("SET").Cells(l, ActiveCell.Column).Value
CHECKED = ThisWorkbook.Worksheets(STName).Range("R4")
RESULT = ThisWorkbook.Worksheets(STName).Range("S4")
If ThisWorkbook.Worksheets(STName).Range("R4") And ThisWorkbook.Worksheets(STName).Range("S4") > "" Then
ActiveWorkbook.Worksheets("DATES").Range("F2:I27").Find(What:=STName, After:=Range("I27"), _
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:=False).Activate
ActiveCell.Next.Activate
ActiveCell = CHECKED
ActiveCell.Next.Activate
ActiveCell = RESULT
ActiveWorkbook.Worksheets("DATES").Range("A2:C21").Find(What:=STName, After:=Range("C21"), _
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:=False).Activate
End If
Next l
MsgBox "Update Complete"
DATES.Save
DATES.Close
ThisWorkbook.Save
Exit Sub
End If
Next i
End Sub