Microsoft Excel

Herbers Excel/VBA-Archiv

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

wenn ein Blatt nicht existiert... | Herbers Excel-Forum


Betrifft: wenn ein Blatt nicht existiert... von: Jörg-HH
Geschrieben am: 14.11.2009 10:25:48

Hallo zusammen

Die Datei, in der dieser Code läuft, hat in ihrer Ursprungsversion vieleviele Blätter, darunter  _
auch Tabelle31.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'Dim Tabelle31

Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True

  'Beim Öffnen der Datei wird die Public Sub refreshCdoKd() bzw. ...Ptn() aufgerufen.
  'Diese ergibt einen Fehler, wenn die Linked Cells von Kd- oder Ptn-Dropdown leer sind
  '(kann nach Änderungen im Blatt DBank vorkommen). Hier ein Hinweis, um das zu verhindern.

If Me.Sheets.Count <= 3 Then
  Exit Sub
Else
  If Tabelle31.Range("G18").Value = "" Then
    MsgBox "Fehler in TP-Daten Kundenrinfo!" & vbLf & _
            "Klicken Sie im folgenden Dialog auf ""Abbrechen""" & vbLf & _
            "und korrigieren Sie den fehlenden Wert!"
    Tabelle31.Range("G18").Select
  End If
  If Tabelle31.Range("L20").Value = "" Then
    MsgBox "Fehler in TP-Daten Partnerinfo!" & vbLf & _
            "Klicken Sie im folgenden Dialog auf ""Abbrechen""" & vbLf & _
            "und korrigieren Sie den fehlenden Wert!"
    Tabelle31.Range("L20").Select
  End If
End If
End Sub
Dann gibt es noch eine Miniversion zum Versenden, in der fast alle Blätter gelöscht sind - u.a. verschwindet dabei auch Tabelle31.

Schließe ich die Vollversion, gibt es keine Probleme.
Schließe ich die Miniversion, wird für "Tabelle31" gemeckert "Variable nicht definiert" (wohl, weil sie nicht mehr da ist)

Also schreibe ich oben Dim Tabelle31.

Dann ist es umgekehrt:

Schließe ich die Miniversion, gibt es keine Probleme.
Schließe ich die Vollversion, wird für "Tabelle31" gemeckert (aber ne andere Meldung - warum stört das Dim Tabelle31 denn überhaupt?)

Also mein nett gemeintes Schnipsel
If Me.Sheets.Count <= 3 Then
Exit Sub
kommt gar nicht zum Einsatz.

Hatte auch schon im Archiv nach Code gesucht, der prüft, ob ein Blatt existiert, aber bei der Einpassung in mein Problem bin ich nicht weitergekommen.

Hat jemand 'ne Idee, wie ich diesen Code ergänzen muß, damit er mit und ohne Tabelle31 läuft?

Im Grunde ist der Teil bei der Miniversion überflüssig - es würde also auch helfen, wenn ich den Abschnitt beim Herstellen der Miniversion löschen könnte, aber ich weiß nicht, wie ich Code mit Code löschen kann.

Grüße - Jörg

  

Betrifft: AW: wenn ein Blatt nicht existiert... von: Nepumuk
Geschrieben am: 14.11.2009 10:44:55

Hallo Jörg,

ein Beispiel:

Public Sub test()
    Dim objWorksheet As Worksheet
    Set objWorksheet = Get_Worksheet_By_CodeName("Tabelle31")
    If Not objWorksheet Is Nothing Then
        If objWorksheet.Range("G18").Value = "" Then
            MsgBox "Fehler in TP-Daten Kundenrinfo!" & vbLf & _
                "Klicken Sie im folgenden Dialog auf ""Abbrechen""" & vbLf & _
                "und korrigieren Sie den fehlenden Wert!"
            objWorksheet.Range("G18").Select
        End If
        If objWorksheet.Range("L20").Value = "" Then
            MsgBox "Fehler in TP-Daten Partnerinfo!" & vbLf & _
                "Klicken Sie im folgenden Dialog auf ""Abbrechen""" & vbLf & _
                "und korrigieren Sie den fehlenden Wert!"
            objWorksheet.Range("L20").Select
        End If
    End If
End Sub

Public Function Get_Worksheet_By_CodeName(strCodeName As String) As Worksheet
    Dim objWorksheet As Worksheet
    For Each objWorksheet In ThisWorkbook.Worksheets
        If objWorksheet.CodeName = strCodeName Then
            Set Get_Worksheet_By_CodeName = objWorksheet
            Exit For
        End If
    Next
End Function

Gruß
Nepumuk


  

Betrifft: klappt... von: Jörg-HH
Geschrieben am: 14.11.2009 13:46:06

Hallo Nepumuk,

ich hab zwar noch nicht ganz verstanden, warum ... aber es klappt!

Danke für den Tip - werd mich nachher nochmal darein vertiefen, um das zu begreifen

Grüße - Jörg


  

Betrifft: klappt doch nicht immer... von: Jörg-HH
Geschrieben am: 16.11.2009 22:26:17

Hi Nepumuk,

klappt doch nicht - und zwar in leicht geänderter Form bei BeforeSave statt BeforeClose, wenn Speichern=ja geklickt wird

Nähere Beschreibung und etwas erweiterter Umfang des Problems guck mal hier, wenn du magst:
https://www.herber.de/forum/messages/1117735.html

Grüße -Jörg