Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Prüfen ob Tabelle vorhand und vor Schließen in Bereich konvertieren
#1
Moin,

ich finde leider entweder nur Lösungen mit Bezug zu Datenbanken oder einfach keine für meinen Fall passende Alternative.

Mein Problem: Ich habe im Tabellenblatt "Daten1" von G71:O96 Datensätze und von G94:O109 ebenfalls, die ich später als Tabelle formatiere.
Gewisse Tools kann ich leider nicht ausführen, wenn ich diese vorher als Tabelle formatiere. Also mache ich dies per Makro nachdem ich das Tool ausgeführt habe, somit habe ich einmal Tabelle "Liste" und einmal die Tabelle "Luft".

Wenn nun jemand die Datei öffnet und die unformatierten Datensätze per Makro in Tabellen umwandelt, soll dies aber auf gar keinen Fall so abgespeichert werden. Also habe ich folgendes mit eingebaut, das die Tabellen wieder in Bereich konvertieren sollte.. Das funktioniert aber nicht ganz so wie gedacht, deswegen bräuchte ich dort hilfe:

Code:
Sub Workbook_BeforeClose(Cancel As Boolean)
'1. Versuch
    Dim td As DAO.TableDef, log1 As Boolean

    For Each td In CurrentDb.TableDefs
        If td.Name = "Liste" Then
            ActiveSheet.ListObjects("Liste").Unlist
        End If
        If td.Name = "Luft" Then
            ActiveSheet.ListObjects("Luft").Unlist
        End If
   
'2. Versuch
    'Dim tbl As TableDef

    'For Each tbl In CurrentDB.TableDefs
    'If tbl.Name = "Liste" Then
    'ActiveSheet.ListObjects("Liste").Unlist
    'End If
    'If tbl.Name = "Luft" Then
    'ActiveSheet.ListObjects("Luft").Unlist
    'End If
   
    'Sheets("Daten1").Select
    'Range("G71").Select
    'If TableExists("Liste") Then
    'ActiveSheet.ListObjects("Liste").Unlist
    'End If
   
    'Range("G94").Select
    'If TableExists("Luft") Then
    'ActiveSheet.ListObjects("Luft").Unlist
    'End If
End Sub

Ich hatte es anfangs nur mit:
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    'Sheets("Daten1").Select
    'ActiveSheet.ListObjects("Liste").Unlist
   
    'ActiveSheet.ListObjects("Luft").Unlist
End Sub
probiert.
Hat natürlich Fehlermeldungen gegeben, da die Tabellen ja auch nicht zwingend immer vorhanden waren, wenn der Nutzer das Makro nicht ausgeführt hat, weil er es nicht brauchte. Also wollte ich eine IF Funktion einbauen, die logischerweise nur dann die Liste in Bereiche konvertiert, wenn die Liste mit dem Namen auch vorhanden ist...

Kann mir wer helfen?

Grüße
Zantana
Antworten Top
#2
Hallo, :19:

prinzipiell so: :21:

Tabellen - ListObjects vorhanden - prüfen...
________
Servus
Case
Antworten Top
#3
Hallo,

Vielen Dank für diese Seite! :100: Ich habe folgenden Code für mich angewandt:

Code:
Sub Main_1()
    ' Wenn die "Tabelle" Table123 im Sheet1 vorhanden ist dann...
    If fncListObjects("Liste", "Daten1") = True Then
        Sheets("Daten1").Select
        Range("G71").Select
        ActiveSheet.ListObjects("Liste").Unlist
    End If
    If fncListObjects("Luft", "Daten1") = True Then
        Sheets("Daten1").Select
        Range("G94").Select
        ActiveSheet.ListObjects("Luft").Unlist
    End If
End Sub

Theoretisch ist nun mein Problem behoben, jedoch verstehe ich nicht, wieso die Tabellen nicht in Bereiche konvertiert werden. Wenn die Tabellen erstellt sind, kann ich das Programm schließen und nach dem erneuten Öffnen, sind diese noch als Tabellen formatiert. Führe ich nun mein Tool aus, gibt dieses keine Fehlermeldung mehr an, obwohl ich Tabellen in der Datei habe. Ich würde das gerne nachvollziehen können. Jemand eine Erklärung dafür?

Grüße
Zantana
Antworten Top
#4
Hallo, :19:

vermeide - wenn möglich "ActiveSheet" und "Select/Activate"!

Schreibe es so: :21:

Code:
Option Explicit
Public Sub Main()
    If fncListObjects("Liste", "Daten1") = True Then
        With ThisWorkbook.Worksheets("Daten1").ListObjects("Liste")
            .TableStyle = ""
            .Unlist
        End With
    End If
End Sub

Die Funktionen zum prüfen natürlich noch dazu!

.TableStyle = ""  nimmt erstmal die Farben/Formate weg. :21:
________
Servus
Case
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste