Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1944to1948
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Zeile einfügen + Formeln kopieren (intelligente Tabelle)

VBA Zeile einfügen + Formeln kopieren (intelligente Tabelle)
25.08.2023 23:59:04
Laubfrosch
Liebe Community,
vielen Dank erst einmal dafür, dass es euch gibt! Ihr habt mir schon oft geholfen!
Dieses Mal komme ich leider mit meinen Kompetenzen und der Recherche im Forum nicht zu einer Lösung und bitte um Hilfe.

In meiner Excel-Arbeitsmappe möchte ich über ein Makro Zeilen in eine intelligente Tabelle einfügen - soweit so gut. Das Makro funktionierte auch soweit, aber Excel übernimmt nicht alle Formeln der darüber stehenden Zeile (auch nicht wenn ich per rechte Mausklick oder Zeile markieren und Strg + eine Zeile einfüge). Ich habe unter Optionen-> Dokumentenprüfung -> AutoKorrektur-Optionen->AutoFormat während der Eingabe -> „Formeln in Tabellen füllen, um berechnete Spalten zu erstellen“ angehackt. Es ist definitiv im Bereich der intelligente Tabelle. Und x male gespeichert und neu geöffnet habe ich auch schon. Ich checke nicht was das Problem ist.

Nun will ich das „einfach“ über VBA lösen. Da ich eh einen Button habe, der eine Zeile einfügt, möchte ich dort programmieren, dass die eingefügte Zeile die Formeln und auch Formate (Dropdown-Liste) der ersten Zeile der Tabelle übernimmt. Ich bekomme die richtige Zeile raus und neue Zeile einfügen klappt auch, aber das Kopieren und Einfügen will nicht klappen. Ich komme mit der Syntax/Typen von Range nicht klar, beide Varianten klappen nicht.
Ich verzweifelte daran leider, hier meine Versuche:

Public Sub ZeileEinfügenGrundmischungen()
Dim FstObj As ListObject
Dim HeaderRow As Integer, LetzteZ As Integer
Dim FstRange As Range
'ActiveSheet.Protect "Passwort", UserInterfaceOnly = True 'Makros funktionieren trotz Blattschutz
Set FstObj = ActiveSheet.ListObjects("BGrundmischungen")
HeaderRow = FstObj.Range.Cells(2, 1).Row 'absolute Zeile mit den ersten Einträgen der o.g. Tabelle
MsgBox HeaderRow 'zum Testen: klappt
'FstRange="A"&HeaderRow&:&"G"&HeaderRow 'Syntax falsch
FstObj.Range(Cells(HeaderRow, 1), Cells(HeaderRow, 7)).Copy 'Typen unverträglich
FstObj.ListRows.Add 'Zeile in o.g. Tabelle einfügen
LetzteZ = FstObj.Range.Rows.Count - 2 'absolute Zeile der neuen Zeile (Überschrifts- und Summenzeile müssen abgezogen werden)
MsgBox LetzteZ 'Zum testen: klappt, wenn fehlerhafte Zeile oben raus ist
FstObj.Range(Cells(LetzteZ, 1), Cells(LetzteZ, 7)).Paste 'geht nicht

End Sub

Was mache ich falsch?

Ich kann nicht mit festen Bezügen arbeiten, da auf der Seite drei int. Tabellen sind, die ggf. alle neue Zeilen benötigen.
Den Blattschutz habe ich noch nicht getestet, aber da ca. 20. Leute die Arbeitsmappe nutzen sollen, soll die Arbeitsmappe unbedingt einen Schutz bekommen.

Meine VBA Kenntnisse sind rudimentär, da 15 Jahre nicht programmiert. Sprich Syntax gleich null, Methodik/Logik wie Schleifen sollten noch vorhanden sein.

Würde mich sehr über Hilfe freuen!

Viele Grüße

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Zeile einfügen + Formeln kopieren (intelligente Tabelle)
26.08.2023 08:34:18
Ulf


Public Sub ZeileEinfügenGrundmischungen()
Dim lObj As ListObject
Dim strAdr As String
Dim strAdr2 As String
Set lObj = ThisWorkbook.Worksheets(1).ListObjects(1)
strAdr = lObj.ListRows(1).Range.Address
lObj.ListRows.Add
strAdr2 = lObj.ListRows(lObj.ListRows.Count).Range.Address
ThisWorkbook.Worksheets(1).Range(strAdr2).Value = ThisWorkbook.Worksheets(1).Range(strAdr).Value
End Sub
hth
Ulf
AW: VBA Zeile einfügen + Formeln kopieren (intelligente Tabelle)
26.08.2023 21:54:52
Laubfrosch
Vielen Dank Ulf!
Mit String und Address hat es geklappt! Allerdings hat Excel wieder in der einen Tabelle in zwei Spalten die Formeln nicht übernommen und in einer anderen Tabelle in einer Spalte einen falsche Formel übernommen(das finde ich unheimlich). Ich habe die Tabellen nun nochmal in Bereiche konvertiert und dann wieder als Tabellen formatiert und nun funktioniert es mit deinem Code! Der Tabellenbereich ist exakt der wie vorher. Komisch.
Falls jemand einen Tipp hat, wie man das Verhalten von Excel (2019) vermeiden kann, gerne! (Cache leeren? habe ich noch nie gehört bei Excel und wüsste nicht wo).

UserInterfaceOnly kennt mein Excel nicht, sagt immer Variable nicht definiert. Aber das ist nochmal ein eigenes Thema und ich habe nun erst mal unprotect und protect verwendet und hoffe das der Code nicht abschmiert und nun läuft alles erstmal wunderbar....

Besten Dank und viele Grüße!
Anzeige
AW: VBA Zeile einfügen + Formeln kopieren (intelligente Tabelle)
27.08.2023 00:54:45
Ulf
Hi,
du kannst auch statt


ThisWorkbook.Worksheets(1).Range(strAdr2).Value = ThisWorkbook.Worksheets(1).Range(strAdr).Value



ThisWorkbook.Worksheets(1).Range(strAdr2).Formula = ThisWorkbook.Worksheets(1).Range(strAdr).Formula

oder


ThisWorkbook.Worksheets(1).Range(strAdr2).Value2 = ThisWorkbook.Worksheets(1).Range(strAdr).Value2

testweise verwenden
Vlt will Excel auch Kontinuierliches:


lObj.ListRows.Add
'letzte bisherige zeile
strAdr = lObj.ListRows(lObj.ListRows.Count-1).Range.Address
strAdr2 = lObj.ListRows(lObj.ListRows.Count).Range.Address
ThisWorkbook.Worksheets(1).Range(strAdr2).Value = ThisWorkbook.Worksheets(1).Range(strAdr).Value

...
hth
Ulf
Anzeige

360 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige