Tabellengröße per VBA dynamisch anpassen
#1
Hallo,

ich war länger nicht mehr hier, muss mich aber wieder als ahnungslos outen:

Weil oft, warum auch immer, bei meinen Tabellen (mit Überschriften/Filter-Schaltflächen) deren Größe bei neuen Einträgen nicht mitwächst, können die Kollegen die Daten nicht vernünftig sortieren.

Im Worksheet_Change-Code des jeweiligen Tabellenblatts soll bei der Tabelle die letzte Zeile ermittelt und um eine erweitert werden.

Hab zwar wie blöd nach dem Trial-and-Error-Prinzip rumexperimentiert, aber das einzige, was funktioniert hat, ist der Tabelle eine feste Größe zuzuordnen.

Code:
ActiveSheet.ListObjects("Tabelle1").Resize Range("$A$7:$D$100")
Antworten Top
#2
Hallo,

Code:
With ActiveSheet.ListObjects("Tabelle1")
    .Resize Range(.Range.Address).Resize(.Range.Rows.Count + 1)
  End With

Gruß Uwe
Antworten Top
#3
Hallo Uwe,




Fehlermeldung: Nicht genügend Stapelspeicher. Er hört nicht auf, die Tabelle nach unten zu verlängern.



Wir haben Excel 2016.



Ohne das "+ 1" geht's. Eigentlich sogar besser. Vielen Dank Uwe! - Nee, doch nicht. Wenn, wie so oft, der Range-Bereich der Tabelle nicht ohnehin bis zur letzten Zeile geht, tut sich nix.

Ich werde die Datei morgen hochladen. Jetzt gehts leider nicht.



Gruß


Uwe
Antworten Top
#4
Hallo Uwe,

ich habe Dir nur den funktionierenden Code geschrieben. Wie/wo Du diesen nun verwendest, weiß ich nicht.
Du schriebst vom Changeereignis. Da wäre nun interessant, wie/wann das dann mit der neuen Zeile passieren soll.
Bei mir tut sich jedenfalls was, wenn ich den Code in ein Makro packe und starte. Wink

Gruß Uwe
Antworten Top
#5
Hi, siehe letzte (bearbeitete) Antwort.

Ich lade morgen die Datei mal hoch.

Gruß
Uwe
Antworten Top
#6
So, hi,

ich habe die Datei extrem verschlankt und anonymisiert, natürlich hat sie eigentlich für jedes Kind/Jugendlichen ein Tabellenblatt, eins für die Dienstübergabe, eine To-Do-Liste und eins für das Gruppenverhalten und von allem eine ausgeblendete Vorlage.

Gruß
Uwe


.xlsm   cef.xlsm (Größe: 92,34 KB / Downloads: 3)
Antworten Top
#7
Hallo Uwe,

teste es mal so:
Code:

'   ------- RESIZE-CODE -------
With Me.ListObjects("Tabelle10")
    If Target.Address = .Range.Cells(.Range.Cells.Count).Address Then
       Application.EnableEvents = False
       .Resize Range(.Range.Address).Resize(.Range.Rows.Count + 1)
       Application.EnableEvents = True
    End If
End With

'  VBA, XML, HTML => Forum-HTML, © 2018 by KHV (VBA) und Haklesoft (VB)

Gruß Uwe
 
Antworten Top
#8
Hallo Uwe,

das bei unseren Rechnern einiges verhext zu sein scheint, zeigt sich vor allem an einem anderen Problem, für das ich gleich (erneut) ein Thema aufmache.

Ich habe es jetzt ganz gut ohne Blattschutz hingekriegt, damit sich die Tabellengröße anpasst, ...

mit einer Mischung aus Datenüberprüfung (Textlänge = 0)

und falls jemand auf [Entf] drückt...

bei Zellen mit Inhalt, der nicht verändert werden darf mit: If IsEmpty(target) Then Application.Undo

im Fall von Tabellenüberschriften, die dann mit "Spalte1" etc. ersetzt werden mit: If target = "Spalte1" Then Cells(7, 1).Value = "Datum"

und rechts der Tabelle befinden sich in einer Spalte Formeln, aber da darf sowieso keiner hin in einem "Worksheet_SelectionChange":

Code:
    If target.Row >= 9 And target.Column >= 5 Then
        MsgBox "HINWEIS" & vbNewLine & vbNewLine & "Kein Zugriff: Geschützter Bereich!", vbCritical, ThisWorkbook.Name
    Cells(Rows.Count, 2).End(xlUp).Offset(1, 0).Select
    End If

Gruß
Uwe
Antworten Top


Gehe zu:


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