Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

MsgBox anstatt Fehlermeldung

Forumthread: MsgBox anstatt Fehlermeldung

MsgBox anstatt Fehlermeldung
30.10.2005 12:04:02
Dieter.G
Hallo zusammen,
mit einem Macro werden aus einer Exceldatei mit dem Namen z.B. Eingabe.xls, Daten in eine andere Exceldatei mit dem Namen z.B. Auswertung.xls kopiert.
Mein Problem:
Wenn ich jetzt das Macro in der Auswertung.xls ausführe und vergessen habe die Eingabe.xls zu öffnen bekomme ich die Fehlermeldung: Laufzeitfehler '9': Index außerhalb des gültigen Bereichs.
Wie kann ich die Fehlermeldung mit einer MsgBox: z.B. "Zuerst muss die Eingabedatei geöffnet werden". abfangen?
Danke für die Hilfe
Gruß Dieter
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: MsgBox anstatt Fehlermeldung
30.10.2005 12:13:07
Alex
Hallo,
ich würde es mit folgender Funktion testen:

Function WBIsOpen(wb As String) As Boolean
Dim e As Workbook
WBIsOpen = False
For Each e In Workbooks
If e.Name = wb Then WBIsOpen = True
Next e
If Not WBIsOpen Then MsgBox "zuerst Eingabe.xls öffnen"
End Function

Aufruf im Code:
...
if WBIsOpen("Eingabe.xls") then...
...
Anzeige
AW: MsgBox anstatt Fehlermeldung
30.10.2005 12:45:01
Dieter.G
Hallo Alex,
das krieg ich irgendwie nicht hin! Wo genau im Macro muß ich die Function einfügen?
Gruß D.
AW: MsgBox anstatt Fehlermeldung
30.10.2005 12:48:59
Matthias
Hallo Dieter,
nicht im Makro, außerhalb. Davor oder danach:

Sub Deinmakro()
If WBIsOpen("Eingabe.xls") Then ...
End Sub
Function WBIsOpen(wb As String) As Boolean
Dim e As Workbook
WBIsOpen = False
For Each e In Workbooks
If e.Name = wb Then WBIsOpen = True
Next e
If Not WBIsOpen Then MsgBox "zuerst Eingabe.xls öffnen"
End Function

Gruß Matthias
Anzeige
AW: MsgBox anstatt Fehlermeldung
30.10.2005 12:54:34
Alex
Füge doch folgendes einfach in ein Modul ein:
Option Explicit

Function WBIsOpen(wb As String) As Boolean
Dim e As Workbook
WBIsOpen = False
For Each e In Workbooks
If e.Name = wb Then WBIsOpen = True
Next e
End Function


Sub Teste()
Dim wb As String
wb = "Eingabe.xls"
If Not WBIsOpen("Eingabe.xls") Then
MsgBox "zuerst " & wb & " öffnen!"
Else
'Dein Code, der ausgeführt werden soll,
'wenn die Mappe geöffnet ist
End If
End Sub

Und führe die

Sub "Teste" aus.
Allerdings wäre es noch eleganter,
die Datei gleich auch über vba zu öffnen.

Anzeige
AW: MsgBox anstatt Fehlermeldung
30.10.2005 13:35:04
Dieter.G
Hallo Alex,
jetzt hab ich's geschnallt, funktioniert einwandfrei!
Danke nochmal
Gruß D.
;
Anzeige
Anzeige

Infobox / Tutorial

MsgBox anstatt Fehlermeldung in Excel VBA verwenden


Schritt-für-Schritt-Anleitung

Um eine Fehlermeldung in Excel durch eine MsgBox zu ersetzen, kannst du folgende Schritte befolgen:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Klicke im Menü auf Einfügen > Modul.

  3. Füge den folgenden VBA-Code ein:

    Option Explicit
    
    Function WBIsOpen(wb As String) As Boolean
       Dim e As Workbook
       WBIsOpen = False
       For Each e In Workbooks
           If e.Name = wb Then WBIsOpen = True
       Next e
    End Function
    
    Sub Teste()
       Dim wb As String
       wb = "Eingabe.xls"
       If Not WBIsOpen(wb) Then
           MsgBox "Zuerst " & wb & " öffnen!"
       Else
           ' Dein Code, der ausgeführt werden soll, wenn die Mappe geöffnet ist
       End If
    End Sub
  4. Führe das Makro aus: Schließe den VBA-Editor und gehe zurück zu Excel. Du kannst das Makro Teste über Entwicklertools > Makros ausführen.


Häufige Fehler und Lösungen

  • Fehlermeldung: Laufzeitfehler '9': Dies passiert häufig, wenn du versuchst, auf eine nicht geöffnete Arbeitsmappe zuzugreifen. Stelle sicher, dass die Datei Eingabe.xls geöffnet ist.
  • MsgBox erscheint nicht: Überprüfe, ob das Makro korrekt aufgerufen wird und dass der Dateiname genau übereinstimmt.

Alternative Methoden

Wenn du eine andere Möglichkeit suchst, um zu überprüfen, ob eine Arbeitsmappe geöffnet ist, kannst du auch die folgenden Methoden in Betracht ziehen:

  • Using On Error Resume Next: Du kannst den Fehler abfangen, ohne eine separate Funktion zu erstellen.

    On Error Resume Next
    Dim wb As Workbook
    Set wb = Workbooks("Eingabe.xls")
    On Error GoTo 0
    If wb Is Nothing Then
       MsgBox "Zuerst Eingabe.xls öffnen!"
    End If

Praktische Beispiele

Hier ist ein Beispiel, wie du die Funktion in einem größeren Makro verwenden kannst:

Sub MeinMakro()
    If Not WBIsOpen("Eingabe.xls") Then
        MsgBox "Bitte öffne zuerst die Eingabedatei."
        Exit Sub
    End If

    ' Weitere Makro-Logik hier
End Sub

Tipps für Profis

  • Modularität: Halte deine Funktionen modular, um die Wartbarkeit zu verbessern.
  • Fehlerprotokollierung: Implementiere eine Fehlerprotokollierung, um Probleme schneller zu identifizieren.
  • Dokumentation: Kommentiere deinen Code ausreichend, damit andere (oder du selbst) später die Logik besser verstehen.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass die MsgBox immer angezeigt wird, wenn die Datei nicht geöffnet ist?
Indem du die Funktion WBIsOpen in allen relevanten Makros aufrufst, kannst du sicherstellen, dass die MsgBox immer erscheint, bevor der Hauptcode ausgeführt wird.

2. Muss ich VBA aktivieren, um diese Funktionen zu nutzen?
Ja, du musst sicherstellen, dass die Entwicklertools in Excel aktiviert sind, um Makros ausführen zu können.

3. Gibt es eine Möglichkeit, die Datei automatisch zu öffnen, wenn sie nicht geöffnet ist?
Ja, du könntest die Workbooks.Open Methode verwenden, um die Datei automatisch zu öffnen, wenn sie nicht geöffnet ist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige