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.

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