Zeile im VBA Code fixieren?
Hallo,
vielleicht kann mir mal wieder jemand bei einem Excel Problem helfen. Im Netz werde ich nicht fündig :-)
Ich habe in meiner Inventurliste (als Tabelle formatiert mit Ergebniszeile) einen Button eingefügt, der mir automatisch eine neue Zeile hinzufügt. In Zelle B8 zählt mir die Formel =Zeile(B1) die Positionen hoch. Damit er diese aber ordentlich zählt, müsste das Makro immer von der Ergebniszeile aus, eine neue Zeile hinzufügen - tut es aber nicht. Dadurch stimmen die Nummerierungen nicht. Kann man dem Makro sagen, dass er immer von der Ergebniszeile ausgeht, egal in welcher Zelle/Spalte diese steht?
Vielen Dank im Voraus :)
2 Antworten
Bei diesen Tabellenobjekten ist es besser, die Tabelle an sich größer zu ziehen und nicht in der darunterliegenden Haupttabelle neue Zeilen einzufügen. Also so:
Sub Tabelle_Groesser()
With ActiveSheet.ListObjects("Tabelle1")
.Resize Range(Left(.Range.Address, 8) & (Mid(.Range.Address, 9) + 1))
End With
End Sub
Dadurch werden dann auch die automatisch ausgefüllten Formeln und die Bereiche, auf die sich die Gesamtergebnisse beziehen, automatisch größer gezogen.
Ich kann dein Problem noch nicht wirklich nachvollziehen, evtl. kannst du ja ein Bild von der Tabelle machen (ohne sensible Daten) und deine Code und was genau wo passieren soll.
@LtLTSmash Bilder sind jetzt dabei :) Ich hoffe sie helfen weiter! Er soll quasi immer von der Ergebniszeile ausgehen..
Wo soll die neue Zeile denn eingefügt werden? Immer am Ende der Liste? Also so, das die Zeile Ergebnis immer eins runterrutscht? Oder ganz oben so das die ganze ÖListe eins runterutscht und neu durchnummeriert werden soll? Muß es auch funktionieren, wenn jemand manuell eine Zeile einfügt?
Genau, die Ergebnis Zeile würde dann immer eins nach unten rutschen. Er müsste theoretisch auch immer von der Ergebniszeile ausgehen - wie ich das in einem Code wiederspiegel, weiß ich nur leider nicht. Manuell braucht dann nichts mehr hinzugefügt werden.. sollte dann alles automatisch per Button funktionieren :)
Dann probier das mal aus
Sub NeueZeile()
Dim ze As Long
'Neue Zeile in Zeile 15 eintragen
ze = 15
Rows(ze).Insert Shift:=xlDown
Do Until Cells(ze, 2).Value = "Ergebnis"
If ze = 1000 Then Exit Do 'Abbruch in Zeile 1000 um endloscheleife zu vermeiden
Cells(ze, 2).Value = ze - 14
ze = ze + 1
Loop
End Sub
Super! Jetzt ist nur noch das Problem, dass er automatisch die Zeilen bis 1000 ausfüllt und auch das "Ergebnis" mit einer Zahl überschreibt. Wie müsste ich den Code anpassen, damit nur ein Eintrag hinzugefügt wird, wenn ich auf den Button gehe? :) Schonmal vielen vielen Dank!!!
Hallo LtLTSmash, ich füge ein Bild und den aktuellen Code mit ein. Es geht mir im Grund nur darum, dass er mithilfe des Buttons automatisch eine Zeile hinzufügt und automatisch die Positionen mit hochzählt. Das Bild zeigt auch das Problem - er fügt nur noch Position 8 hinzu.