Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Allgemeine Frage zu Makro

Betrifft: Allgemeine Frage zu Makro von: RenÚ
Geschrieben am: 16.02.2007 12:44:01

Hi Gemeinde,

wie stelle ich es an, wenn ich 2 Aufgaben/Makros unter z.B. Private Sub Workbook_BeforeClose(Cancel As Boolean) aufuehren moechte.
Trage ich 2mal "Private Sub Workbook_BeforeClose(Cancel As Boolean)" ein, kommt die Fehlermeldung "Mehrdeutiger Befehl". Ich nehme an, die Meldung erfolgt nur, da ich 2mal diesen Befehl in einem Blatt habe. Wenn ich einfach ein Makro hinten anfuege, fuehrt Excel nur das erste aus und ignoriert das folgend angefuegte. Es muesste dann wohl einen Befehl geben, der das erste MAkro beendet und das naechste in Folge ausfuehrt. Ich hoffe ich habe mich verstaendlich ausgedrueckt. Vielen Dank!


MfG
RenÚ

  


Betrifft: AW: Allgemeine Frage zu Makro von: Dieter W.
Geschrieben am: 16.02.2007 12:50:42

Hallo RenÚ

das sub Workbook_BeforeClose ist ja nichts anderes als ein Makro, was halt ausgefŘhrt wird, bevor Du eine Workbook schliesst.

Wenn Du nun mehrere Aufgaben starten willst, dann schreibe diese doch hintereinader weg... so ungefńhr:

Und Du kannst halt soviel Aktion in dieses Sub reinschreiben wie Du m÷chtest. Der besseren ▄bersichtlichkeit her, wŘrde ich aus diesem Sub nur andere Subs starten, au▀er es sind minibefehle, fŘr die sich ein eigenes sub nicht lohnt.

Private Sub Workbook_BeforeClose(Cancel As Boolean)

' Autor         : 08.02.2007    dwk
' Zweck         :
' Verwendet von :
' RŘckgabe      :
' Parameter     :
' Hinweise      :
' Entwicklung   : 08.02.2007    dwk

    On Error GoTo HandleErr

    Const FUNKTIONSNAME As String = "DieseArbeitsmappe.Workbook_BeforeClose"

    Aufgabe1
    Aufgabe2

    
ExitHere:
    Exit Sub

HandleErr:
    Select Case Err.Number
        Case Else
        MsgBox "Fehler Nr.: " & Err.Number & vbCr & Err.Description, vbExclamation, FUNKTIONSNAME
        Resume ExitHere
    End Select

End Sub


Ich hoffe geholfen zu haben und verbleibe freundlichst

Dieter W. Kleist


  


Betrifft: AW: Allgemeine Frage zu Makro von: RenÚ
Geschrieben am: 16.02.2007 13:17:33

Hallo Dieter W.,

ich wuerde es gerne verstehen aber es ist dann wohl doch nich so einfach... zumindest funkt das bei mir nich so recht :(

Ich zeig dir mal den Code und eventuell stellst den Fehler fest.

Private Sub Workbook_Open()
Sheets("Mappe2").[D3] = Rnd
Exit Sub

Sheets(1).Visible = False
Sheets(2).Visible = True
Sheets(3).Visible = True
End Sub


Private Sub Workbook_BeforeClose(Cancel As Boolean)
ThisWorkbook.Save
Exit Sub


Sheets(1).Visible = True
Sheets(2).Visible = False
Sheets(3).Visible = False
End Sub



Vielen Dank!


MfG
RenÚ


  


Betrifft: AW: Allgemeine Frage zu Makro von: Dieter W.
Geschrieben am: 16.02.2007 13:19:59

Na nimm doch mal die beiden Zeilen Exit Sub aus den Modulen... so kann er unten bei den Sheet Geschichten nie ankommen...

Probier mal

MfG Dieter W. Kleist


  


Betrifft: AW: Allgemeine Frage zu Makro von: RenÚ
Geschrieben am: 16.02.2007 13:24:56

Omg! ;) Es funzt!

Ok vielen Dank!!!!!


MfG
RenÚ


  


Betrifft: AW: Allgemeine Frage zu Makro von: Dieter W.
Geschrieben am: 16.02.2007 13:28:33

Aber eine Frage interessiert mich noch...

Wieso blendest Du das Sheet 1 ein, wenn Du die Datei schliesst, wenn du es beim Íffnen wieder ausblendest. Das selbe gilt fŘr 2 und 3... Ist das sinnvoll?

MfG Dieter W. Kleist


  


Betrifft: AW: Allgemeine Frage zu Makro von: RenÚ
Geschrieben am: 16.02.2007 13:31:14

Erm nein! Das ganze war nur einfach rauskopiert als Beispiel. Das es nicht funktionierte war mir vorher schon klar. Ich wollte nur wissen wie man es anstellt mehrere Befehle unter einer Subfunktion zum Laufen zu bringen.


MfG
RenÚ


  


Betrifft: AW: Allgemeine Frage zu Makro von: RenÚ
Geschrieben am: 16.02.2007 13:42:03

Der richtige Code war dieser hier:

Private Sub Workbook_BeforeClose(Cancel As Boolean)

Sheets(1).Visible = True
Sheets(2).Visible = False
Sheets(3).Visible = False

End Sub


Private Sub Workbook_Open()

Sheets(2).Visible = True
Sheets(3).Visible = True
Sheets(1).Visible = False

End Sub



zumindest funkt er. Diesen hatte ich auch mal hier gefunden, durch diese Spielerei mit den Makros ist das ganze etwas durcheinander geraten. Sonnige Gruesse


MfG
RenÚ