gimli3311
Goto Top

VBA: workbook schließt sich nicht, wenn Sheet ein Diagramm ist

Guten Abend Zusammen,

habe ein zweites Problem in meinem Code. Dachte ich kann des selber lösen aber es klappt leider nicht.

Wenn ich eine Datei öffne und das erste Tabellenblatt KEIN DIAGRAMM ist dann schließt sich die Datei Problemlos.
Wenn das erste Tabellenblatt aber EIN Diagramm ist schließt es sich nicht.

            Dim sheetCounter As Integer
            
            sheetCounter = 1
            
            'öffne Datei, nur Lesen, Keine Updates  
                Set wb = Workbooks.Open(f, ReadOnly:=True, UpdateLinks:=0, Password:="Passwort").Sheets(sheetCounter)  
                    

                'Suche nach Logbuch oder Logbook in Datei --> Funktion: search()  
                    blFound = search()
                
                'Ruft Funktion checkTemplate auf und gibt eine Ganzzahl zurück ()  
                    lngTemplate = checkTemplate(blFound, strFileName)
            'Schließe Datei. False = ohne zu speichern!  
                wb.Parent.Close False

Überwachungsausdrücke wenn erstes Tabellenblatt KEIN Diagramm ist:

494e947db3293cf9c5963189f236e408

Überwachungsausdrücke wenn erstes Tabellenblatt EIN Diagramm ist:

c03fe5b5788e0e7a01304a196ab35ef2


Meine Überlegungen waren das ich mit IF ELSE prüfe ob wb NULL, Nothing oder Leer ist ("") und falls ja das ich die variable sheetCounter +1 zähle bis kein Diagrammblatt mehr kommt.
Hat aber leider nicht funktioniert. Habt ihr eine Idee?

Grüße Gimli3311

Content-Key: 288829

Url: https://administrator.de/contentid/288829

Printed on: April 23, 2024 at 19:04 o'clock

Mitglied: 122990
Solution 122990 Nov 19, 2015 updated at 16:56:27 (UTC)
Goto Top
Moin,
ganz einfach, du hast vermutlich deine Variable als Typ:Worksheet deklariert und On Error Resume Next benutzt, ein Diagramm ist aber kein Objekt vom Typ Worksheet sondern Chart, also setzte die Variable auf den Typ Object und prüfe den dann den Typ mit der Funktion TypeName(varName):
Dim wb As Object
Set wb = Workbooks.Open(f, ReadOnly:=True, UpdateLinks:=0,Password:="Passwort").Sheets(sheetCounter)   
If TypeName(wb) = "Worksheet" Then  
    ' Objekt ist ein Worksheet  
    MsgBox "Objekt ist ein Worksheet"  
Else
    ' Objekt ist ein Chart oder was anderes  
    MsgBox "Objekt ist 'kein' Worksheet"  
End If
Gruß grexit
Member: Gimli3311
Gimli3311 Nov 19, 2015 at 16:58:07 (UTC)
Goto Top
Hey grexit,

Genau das war das Problem ;) Super Erklärung!
Jetzt kann ich es noch mit der MsgBox ausprobieren, melde mich wieder im anderen Thema.

Grüße Gimli3311