Clever-Excel-Forum

Normale Version: Wenn automatische Tabellenerweiterung, dann
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Moin in die Runde:

Wie würde eine VBA-Zeile aussehen, die sagt, dass eine bestimmte Aktion passieren soll, wenn es eine automatische Tabellenerweiterung gibt? Geht das überhaupt?
Hallöchen,

Also, mit automatisch geht es nicht um das Hinzufügen einer Zeile oder Spalte per Ein- oder Anfügen oder das Löschen, sondern um Änderung bei einer Eingabe. Korrekt?

Du könntest bei einer Eingabe, also Worksheet_Change, prüfen, ob sich die Tabellengröße (ANzahl zeilen oder Spalten) geändert hat. Du müsstest Dir dazu nur die Größe irgendwie merken, z.B. in einer Variable die Du beim Workbook_Open das erste mal füllst, oder als Wert in einer Zelle, oder ...
(18.12.2021, 17:29)schauan schrieb: [ -> ]Hallöchen,

Also, mit automatisch geht es nicht um das Hinzufügen einer Zeile oder Spalte per Ein- oder Anfügen oder das Löschen, sondern um Änderung bei einer Eingabe. Korrekt?

Du könntest bei einer Eingabe, also Worksheet_Change, prüfen, ob sich die Tabellengröße (ANzahl zeilen oder Spalten) geändert hat. Du müsstest Dir dazu nur die Größe irgendwie merken, z.B. in einer Variable die Du beim Workbook_Open das erste mal füllst, oder als Wert in einer Zelle, oder ...

Richtig, wenn ich unter der Tabelle neue Daten eingebe, erweitert Excel die Tabelle halt automatisch. Immer wenn das passiert, möchte ich, dass etwas gewisses passiert.

Danke schon mal für deinen Tipp. Ich lasse mir das gerade mal durch den Kopf gehen, wie man das gestalten könnte. Bin da noch ein wenig ratlos. Wenn du da irgendwie konkretere Vorstellungen hast, würde ich mich natürlich sehr freuen!
Hallöchen,

im Prinzip so. Bea. dass hier Zelle C1 zum Speichern der Zeilenzahl verwendet wir

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  'Variablendeklarationen
  Dim objWSh As Worksheet, objLOb As ListObject, lRows As Long
  'Blatt dem Objekt zuweisen
  Set objWSh = ActiveWorkbook.Worksheets("Tabelle1")
  'Tabelle dem Objekt zuweisen
  Set objLOb = objWSh.ListObjects("Tabelle1")
  'Anzahl Zeilen ermitteln
  lRows = objLOb.DataBodyRange.Rows.Count
  'Wenn die Anzahl verschieden ist vom hinterlegten Wert, dann
  If Cells(1, 3).Value <> lRows Then
    'Meldung ausgeben
    MsgBox "alt: " & Cells(1, 3).Value & vbLf & "neu: " & lRows
  'Eede Wenn die Anzahl verschieden ist vom hinterlegten Wert, dann
  End If
  'Zeilenzahl in Zelle C1 merken
  Cells(1, 3).Value = lRows
End Sub