2013-10-02 20 views
1

好了,我的工作在工作簿上应该防止从USERLIST关闭它,而不让其先更新另一个工作簿,然后保存。我试图避免添加一个按钮来做到这一点,只要用户点击红色X关闭窗口就会发生。但是,当其他非用户访问它并且不能更新它时,会出现一些情况。我想给他们不更新和保存退出选项,但我不知道如何禁用“是否要保存”对话框中使用默认设置为“不保存”。如果我使用代码关闭一个工作簿中的红色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 
+0

以下哪MSGBOX的一个提示是给你的麻烦?或者他们都是? –

+0

再次,我相信我已经回答了我自己的问题:http://support.microsoft.com/kb/213428 示例1:关闭工作簿而不保存更改 要强制工作簿关闭而不保存任何更改,请键入 ThisWorkbook.Saved =真 我的代码:\t \t \t \t elseif的响应= vbCancel然后 响应= MSGBOX(提示:在工作簿的Visual Basic模块下面的代码。=“没有更新的主你是不是想关闭而不保存和更新“按钮:?= vbYesNo) 如果响应= vbYes然后 ActiveWorkbook.Saved =真 退出小组 – NoGenocide

+1

+1,但请其他人着想,不要试图把代码中的注释。它不适合,也不适合渲染(缩进等)。如果你已经回答了你的问题,将其添加为*答案* :) –

回答

1

再次,我相信我已经回答了我的问题:如何抑制“保存更改”提示当您关闭在Excel

工作簿示例1:关闭工作簿不保存更改

要强制工作簿关闭不保存任何更改,在工作簿的Visual Basic模块中键入下面的代码:

Sub Auto_Close() 
ThisWorkbook.Saved = True 
End Sub 

我的代码:

​​
相关问题