Microsoft Excel

Herbers Excel/VBA-Archiv

Makro zum Löschen von Tabellenblättern und Inhalte

Betrifft: Makro zum Löschen von Tabellenblättern und Inhalte von: Mustermann83
Geschrieben am: 09.11.2012 13:03:39

Hallo ich habe ein Problem in Excel.

In der angefügten Datei benötige ich ein Makro um das Dateneinlesen zu beschleunigen. Ich habe aber keine Ahnung ob so etwas überhaupt funktioniert.

Die Daten des Tabellenblattes „Werte vorher“ sollen gelöscht werden. (spalte B, C und D)
Dann sollen die Werte des Tabellenblattes „Werte aktuell“ in das Tabellenblatt „Werte vorher“ eingefügt werden. (Spalte B, C und D)
Dann sollen die Werte aus dem Tabellenblatt „Werte aktuell“ gelöscht werden. (Spalte B, C und D)

Analog soll dies mit den Tabellenblättern „Datengrundl aktuell“ und „Datengrundl vorher“ erfolgen. (Hier soll die Formel der Spalte A erhalten bleiben bleiben)

Ferner sollen alle Tabellenblätter die Tabelle heißen („Tabelle1“ bis „Tabelle5“) gelöscht werden.

Außerdem sollen alle Tabellenblätter, die „Daten einfügen“ heißen, geleert werden (nur Zeile 1 soll erhalten bleiben)

Vielen Dank für Eure Hilfe!

https://www.herber.de/bbs/user/82547.xls

  

Betrifft: AW: Makro zum Löschen von Tabellenblättern und Inhalte von: fcs
Geschrieben am: 10.11.2012 12:52:44

Hallo Mustermann83,

in der Textdatei sind entsprechende Makros zur Aufbereitung der Daten.
https://www.herber.de/bbs/user/82562.txt

Gruß
Franz


  

Betrifft: AW: Makro zum Löschen von Tabellenblättern und Inhalte von: Mustermann83
Geschrieben am: 10.11.2012 20:40:32

Vielen Dank im großen und ganzen funktioniert das Makro.

aber ich habe im Tabellenblatt aktuell und vorher vielmehr Spalten in der richtigen Datei. Leider löscht es nur bis Spalte F so wie in der Beispieltabelle.


  

Betrifft: AW: Makro zum Löschen von Tabellenblättern und Inhalte von: Mustermann83
Geschrieben am: 10.11.2012 20:56:05

Außerdem löscht es Spalte A in der Tabelle Datengrdl vorher und die Formeln aus dem Tabellenblatt Werte vorher, wenn die Daten (Spalte B, C, D) nicht weiter als z.B. Zeile 48 gehen. Die Formeln sind aber bis z.B. Zeile 10000 hinterlegt.


  

Betrifft: AW: Makro zum Löschen von Tabellenblättern und Inhalte von: Mustermann83
Geschrieben am: 11.11.2012 17:50:16

Hallo,
ich habe mich jetzt noch mal mit dem Makro beschäftigt, das zweite Problem mit den Spalten aus dem Tabellenblatt Werte aktuell und vorher hat sich glaube ich gelöst, weil es immer genauso viele Zeilen kopiert.

Jetzt habe ich nur noch das Problem, mit der Spaltenanzahl in dem Tabellenblatt Datengrdl vorher und nachher, da es ja nicht nur F Spalten wie im Beispiel sind.
Außerdem löscht es mir Spalte A (hier sind Formeln hinterlegt) in dem Tabellenblatt Datengrdl nachher. In der Beispieldatei, die ich hochgeladen habe ist das glaube ich nicht so.

Danke für Eure Hilfe


  

Betrifft: AW: Makro zum Löschen von Tabellenblättern und Inhalte von: Mustermann83
Geschrieben am: 11.11.2012 18:01:19

So jetzt habe ich meinen Fehler gefunden, da in der ersten Zelle und Spalte keine Formel hinterlegt war, hat es mir im Tabellenblatt Datengrundl nachher alle Formeln gelöscht. Jetzt besteht nur noch das Problem, das es mir nur die Daten bis Spalte F aus dem Tabellenblatt Datengrdl vorher in Datengrdl nachher kopiert. Welchen Parameter muss ich denn da jetzt im Makro ändern?


  

Betrifft: AW: Makro zum Löschen von Tabellenblättern und Inhalte von: fcs
Geschrieben am: 11.11.2012 18:31:44

Hallo Mustermann,

meiner Meinung nach macht es wenig Sinn, die Vorher-Tabellen mit mehreren 10000 Formeln vorzubelegen. Hier kann man die Formeln auch an den tatsächlichen Datenbestand anpassen.

Ansonsten hier die beiden Makros mit den notwendigen Anpassungen, so dass in Werte nur Spalten B:D Inhalte gelöscht und wieder aufgefüllt werden und bei Datengrdl jeweils alle Daten ab Spalte B bis zu letzten Spalte kopiert/gelöscht werden.


Gruß
Franz

Private Sub Aufbereiten_Werte()
  Dim wks_Q As Worksheet
  Dim wks_Z As Worksheet
  Dim lngZeile As Long
  Set wks_Q = Worksheets("Werte aktuell")
  Set wks_Z = Worksheets("Werte vorher")
  With wks_Z
    lngZeile = .Cells.SpecialCells(xlCellTypeLastCell).Row
    .Range(.Cells(1, 2), .Cells(lngZeile, 4)).ClearContents
    With wks_Q
      lngZeile = .Cells(.Rows.Count, 3).End(xlUp).Row
      .Range(.Cells(1, 2), .Cells(lngZeile, 4)).Copy
      wks_Z.Cells(1, 2).PasteSpecial Paste:=xlPasteValues
    End With
  End With
  With wks_Q
    .Range("B:D").ClearContents
  End With
End Sub

Private Sub Aufbereiten_Datengrdl()
  Dim wks_Q As Worksheet
  Dim wks_Z As Worksheet, lngZeile As Long, lngSpalte As Long
  Set wks_Q = Worksheets("Datengrdl aktuell")
  Set wks_Z = Worksheets("Datengrdl vorher")
  With wks_Z
    lngZeile = .Cells.SpecialCells(xlCellTypeLastCell).Row
    lngSpalte = .Cells.SpecialCells(xlCellTypeLastCell).Column
    If lngSpalte >= 2 Then
      .Range(.Cells(1, 2), .Cells(lngZeile, lngSpalte)).ClearContents
    End If
    With wks_Q
      lngZeile = .Cells.SpecialCells(xlCellTypeLastCell).Row
      lngSpalte = .Cells.SpecialCells(xlCellTypeLastCell).Column
      If lngSpalte >= 2 Then
        .Range(.Cells(1, 2), .Cells(lngZeile, lngSpalte)).Copy
        wks_Z.Cells(1, 2).PasteSpecial Paste:=xlPasteValues
        .Range(.Cells(1, 2), .Cells(lngZeile, lngSpalte)).ClearContents
      End If
    End With
  End With
End Sub



 

Beiträge aus den Excel-Beispielen zum Thema "Makro zum Löschen von Tabellenblättern und Inhalte"