Microsoft Excel

Herbers Excel/VBA-Archiv

VBA dynamischen Tabellenbereich

Betrifft: VBA dynamischen Tabellenbereich von: Sioo
Geschrieben am: 29.08.2014 14:00:45

Hallo, möchte gerne ein Macro erstellen um einen dynamischen Bereich zu markieren und dann als Tabelle zu formatieren. Habe den Macro recorder benutzt und folgendes erhalten:

Sub fTabelle()
        Sheets("M1").Activate
    Rows("1:1").Select
    Selection.Delete Shift:=xlUp
    Columns("A:A").Select
    Selection.Delete Shift:=xlToLeft
    Rows("2:2").Select
    Selection.Delete Shift:=xlUp
    Range("A1:D5224").Select
    Range("B8").Activate
    ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A$1:$D$5224"), , xlYes).Name = _
        "Tabelle3"
    Range("Tabelle3[#All]").Select
End Sub
Der erste Teil ist richtig, die 3 Zeilen und die Spalte A:A müssen immer gelöscht werden (da die SAP Datei immer so formatiert ist).

Aber der Teil Range("A1:D5224").Select ist dynamisch. Manchmal sind da mehr Zeilen, manchmal weniger. Würde gerne den zweiten Part dynamisch gestalten. (Letzte Zeile und Spalte automatisch erkennen und dann als Tabelle formatieren)

  

Betrifft: AW: VBA dynamischen Tabellenbereich von: yummi
Geschrieben am: 29.08.2014 14:15:52

Hallo Sioo,

ungetestet

Sub fTabelle()
    Sheets("M1").Activate
    Rows("1:1").Delete Shift:=xlUp
    Columns("A:A").Delete Shift:=xlToLeft
    Rows("2:2").Delete Shift:=xlUp

    letztezeile = Sheets("M1").UsedRange.SpecialCells(xlCellTypeLastCell).Row

    ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A$1:$D$" & letztezeile), , xlYes).Name = _
        "Tabelle3"
    Range("Tabelle3[#All]").Select
End Sub
Gruß
yummi


  

Betrifft: AW: VBA dynamischen Tabellenbereich von: Sioo
Geschrieben am: 29.08.2014 14:26:14

Hallo, danke für die schnelle Antwort. Das mit der letzten Zeile hat geklappt aber letzte Spalte nicht.

Habe eine Beispieldatei angehängt, wie es aus SAP kommt. https://www.herber.de/bbs/user/92387.xlsx


  

Betrifft: AW: VBA dynamischen Tabellenbereich von: yummi
Geschrieben am: 29.08.2014 14:40:56

hallo Sioo,

sry übersehen :-)
Du musst das "D" noch ersetzen, die letzte Spalte der zeile 4 holst du dir so

letztespalte = Sheets("M1").Cells(4, 256).End(xlToLeft).Column

dann im Range, wo das D steht letztespalte analog zu letztezeile einfügen

Gruß
yummi


  

Betrifft: AW: VBA dynamischen Tabellenbereich von: yummi
Geschrieben am: 29.08.2014 15:07:47

Hallo Sioo,

nimm folgenden Code, Du musst nur darauf achten, dass das Tabellenblatt hier M1 heisst

Option Explicit

Sub fTabelle()
Dim letztezeile As Long
Dim letzteSpalte As Integer

    Sheets("M1").Activate
    Rows("1:1").Delete Shift:=xlUp
    Columns("A:A").Delete Shift:=xlToLeft
    Rows("2:2").Delete Shift:=xlUp

    letztezeile = Sheets("M1").UsedRange.SpecialCells(xlCellTypeLastCell).Row
    letzteSpalte = Sheets("M1").Cells(4, 256).End(xlToLeft).Column
    
    ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A$1:$" & WandleZahlInBuchstaben( _
letzteSpalte) & "$" & letztezeile), , xlYes).Name = _
        "Tabelle3"
    Range("Tabelle3[#All]").Select
End Sub

Function WandleZahlInBuchstaben(ByVal iWert As Integer) As String
    Dim Spaltenbuchstabe As String
    
    Spaltenbuchstabe = Right(Columns(iWert).Address, _
    Len(Columns(iWert).Address) - _
    InStrRev(Columns(iWert).Address, "$"))

    WandleZahlInBuchstaben = Spaltenbuchstabe
End Function
https://www.herber.de/bbs/user/92390.xlsm


  

Betrifft: AW: VBA dynamischen Tabellenbereich von: Sioo
Geschrieben am: 29.08.2014 15:15:44

Danke schön! Klappt bestens


 

Beiträge aus den Excel-Beispielen zum Thema "VBA dynamischen Tabellenbereich "