2016-05-10 7 views
0

Ich habe zwei Module, die ich gerne bei der Eröffnung der Arbeitsmappe ausgeführt werden würde, was der beste Weg ist, das zu tun. Unten sind meine Module.führen Sie zwei Module bei Excel Start

Modul 1

Public Sub workbook_open() 


Dim YesOrNoAnswerToMessageBox As String 
Dim QuestionToMessageBox As String 

    QuestionToMessageBox = "Do you Agree?" 

    YesOrNoAnswerToMessageBox = MsgBox(QuestionToMessageBox, vbYesNo, "Do you agree with disclaimer") 

    If YesOrNoAnswerToMessageBox = vbNo Then 
     ActiveWorkbook.Close savechanges:=False 
    Else 
     MsgBox "Congratulations!" 
    End If 

End Sub 

Modul 2

Sub workbook_open() 
    Dim Expired As Date 
    Expired = "31 March 2016" 

    If Now() < Expired Then 

     Sheet1.Visible = True 
     Sheet2.Visible = True 
     Sheet3.Visible = True 
     Sheet6.Visible = True 
     Sheet7.Visible = True 
     Sheet8.Visible = True 
     Sheet9.Visible = True 
     Sheet13.Visible = True 
     Sheet5.Visible = True 
     Sheet10.Visible = xlSheetHidden 

     End If 

    If Now() > Expired Then 
     MsgBox "This file is no longer in use!" 
     Sheet10.Visible = True 
     Sheet1.Visible = xlSheetVeryHidden 
     Sheet2.Visible = xlSheetVeryHidden 
     Sheet3.Visible = xlSheetVeryHidden 
     Sheet6.Visible = xlSheetVeryHidden 
     Sheet7.Visible = xlSheetVeryHidden 
     Sheet9.Visible = xlSheetVeryHidden 
     Sheet13.Visible = xlSheetVeryHidden 
     Sheet5.Visible = xlSheetVeryHidden 
     Sheet8.Visible = xlSheetVeryHidden 


    End If 

End Sub 
+0

Sie könnten sie in zwei Subs setzen und sie beide in der 'workbook_open' aufrufen. – litelite

+0

Und was passiert in Modul 2, wenn Sie genau am Ablaufdatum sind? – litelite

Antwort

2

Das Workbook_Open() Ereignis hat im ThisWorkbook Modul deklariert do, nicht ein Standardcode-Modul.

Sie können Ihre aktuelle Verfahren umbenennen und nennen sie nur sowohl von der offenen Veranstaltung wie folgt:


In Module1:

Sub Foo() 
    MsgBox "First Message" 
End Sub 

In Module2:

Sub Bar() 
    MsgBox "Second Message" 
End Sub 

Dann im ThisWorkbook Modul:

Public Sub Workbook_Open() 
    Foo 
    Bar 
End Sub 

an Ihrem vorhandenen Code suchen, müssen Sie nur die zweite Unter in Ihrem If Block zu übernehmen:

Im ThisWorkbook Modul:

Public Sub workbook_open() 

Dim YesOrNoAnswerToMessageBox As String 
Dim QuestionToMessageBox As String 

QuestionToMessageBox = "Do you Agree?" 

YesOrNoAnswerToMessageBox = MsgBox(QuestionToMessageBox, vbYesNo, "Do you agree with disclaimer") 

If YesOrNoAnswerToMessageBox = vbNo Then 
    ActiveWorkbook.Close savechanges:=False 
Else 
    MsgBox "Congratulations!" 
    OpeningProcedure '// <~~ Note this, to call the other sub 
End If 
End Sub 

und in Module1:

Sub OpeningProcedure() 

Dim Expired As Date Expired = "31 March 2016" 

If Now() < Expired Then 

    Sheet1.Visible = True 
    Sheet2.Visible = True 
    Sheet3.Visible = True 
    Sheet6.Visible = True 
    Sheet7.Visible = True 
    Sheet8.Visible = True 
    Sheet9.Visible = True 
    Sheet13.Visible = True 
    Sheet5.Visible = True 
    Sheet10.Visible = xlSheetHidden 

    End If 

If Now() > Expired Then 
    MsgBox "This file is no longer in use!" 
    Sheet10.Visible = True 
    Sheet1.Visible = xlSheetVeryHidden 
    Sheet2.Visible = xlSheetVeryHidden 
    Sheet3.Visible = xlSheetVeryHidden 
    Sheet6.Visible = xlSheetVeryHidden 
    Sheet7.Visible = xlSheetVeryHidden 
    Sheet9.Visible = xlSheetVeryHidden 
    Sheet13.Visible = xlSheetVeryHidden 
    Sheet5.Visible = xlSheetVeryHidden 
    Sheet8.Visible = xlSheetVeryHidden 


End If 
End Sub 
Verwandte Themen