2016-06-08 1 views
0

Ich hatte ein Problem, dass ich die Antwort gefunden habe, aber es sagt "Dieser Code muss in einem Klassenmodul gebucht werden und eine Instanz der Klasse muss erstellt werden, bevor es funktioniert". Ich bin sehr vertraut mit "Module", aber noch nie Klassenmodule verwendet, und kann nicht in der Lage sein, herauszufinden, wie man dieses Ding zum Laufen bringen. Unten ist der Code, den ich verwende, und einige meiner zufälligen Versuche, es zum Laufen zu bringen. Es gibt dies (A) und (WorkbookBeforeClose), und in "ThisWorkbook" ein anderes (BeforeClose), es verwirrt mich.ClassModule BeforeClose

Verwendung des Codes; Ich habe eine Benutzerform, die, wenn angezeigt, verbirgt das Fenster/Anwendung basierend darauf, ob andere Arbeitsmappen geöffnet sind, soll dieser Code beim Schließen anderer Bücher beide versuchen zu schließen.

Ihre Hilfe sehr geschätzt wird

Code:

Public WithEvents A As Excel.Application 

Private Sub A_WorkbookBeforeClose(ByVal Wb As Workbook, Cancel As Boolean) 

Dim VIS As Boolean, myAW As Workbook 

If Workbooks.Count > 1 Then 'if there is more than one workbook open... 
    If Windows(ThisWorkbook.Name).Visible = False Then 'and if Client is invisible... 
     If ActiveWorkbook.Name = ThisWorkbook.Name Then 'and if the workbook being closed is the Client. 
      Windows(ThisWorkbook.Name).Visible = True 
     Else 'more than one wb open, Client is invisible, and the workbook being closed is NOT the Client. 
      Set myAW = ActiveWorkbook 
      Cancel = True 
      Windows(ThisWorkbook.Name).Visible = True 
      Application.EnableEvents = False 
      myAW.Close 
      Application.EnableEvents = True 
      If ServiceEntry.ExcelB.Tag = "False" Then 'a tag on the button on the UserForm to store whether the workbook should be hidden or not 
       If Workbooks.Count > 1 Then 
        Windows(ThisWorkbook.Name).Visible = False 
       Else 
        ThisWorkbook.Application.Visible = False 
       End If 
      End If 
      Exit Sub 
     End If 

    ElseIf ActiveWorkbook.Name <> ThisWorkbook.Name Then 
     'more than one workbook open and the Client is visible and the workbook being closed is NOT the Client 

     Exit Sub 
    End If 
End If 

End Sub 
+0

Bitte bearbeiten Sie Ihre Frage, um den tatsächlichen Code einzufügen. Die Verwendung von Code dient nicht dem gewünschten Zweck. Diese Community soll Ihnen helfen, Probleme bei der Ausführung von Code zu überwinden. Sie müssen also angeben, welches Problem bei der Ausführung des Codes aufgetreten ist. – skkakkar

Antwort

0

ein Objekt zu erstellen, müssen Sie nur tun müssen:

Dim C As Class1 'where Class1 is your module class name 
Set C = New Class1 

Sie dies bei der Initialisierung tun Ihrer userForm:

Private Sub userForm_Initialize() 
    Dim C As Class1 
    Set C = New Class1 
End Sub