1

さて、私が取り組んでいるワークブックは、最初に別のワークブックを更新してから保存することを許可せずに、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
4

1 に答える 1

1

もう一度、私は自分の質問に答えたと思います: Excel でワークブックを閉じるときに "変更を保存" プロンプトを抑制する方法

例 1: 変更を保存せずにブックを閉じる

変更を保存せずにブックを強制的に閉じるには、そのブックの Visual Basic モジュールに次のコードを入力します。

Sub Auto_Close()
ThisWorkbook.Saved = True
End Sub

私のコード:

ElseIf response = vbCancel Then
    response = MsgBox(prompt:="Master not updated. Are you trying to close without saving and updating?", Buttons:=vbYesNo)
        If response = vbYes Then
        ActiveWorkbook.Saved = True
        Exit Sub
于 2013-10-04T19:08:16.970 に答える