Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Tabelle mit Makro erweitern

Tabelle mit Makro erweitern
20.08.2014 13:00:13
Andi
Hallo,
ich habe eine Tabelle mit folgender Struktur:
Überschrift 1 Überschrift 2
Wert 1 Wert 1
Wert 2 Wert 2
Summe Summe
Jetzt würde ich gerne durch ein Makro eine neue Zeile (Wert 3) einfügen, der das Format und die Formeln (aber nicht die Zellenwerte!) der 1ten Teile übernimmt und auch in die Summe einbezogen wird.

Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabelle mit Makro erweitern
20.08.2014 13:15:46
Jürgen
Hallo Andi,
wirf doch einmal einen Blick auf das Thema "Tabellen". Wenn Du Deine Wertetabelle mit START - ALS TABELLE FORMATIEREN in eine Tabelle umwandelst, erhältst Du nicht nur eine Formatierung, sondern genau das Verhalten, das Du beschreibst. Für die Summe benötigst Du keine Summe()-Funktion mehr, sondern Du aktiviert nach Klick in die Tabelle über TABELLENTOOLS die Option ERGEBNISZEILE und kannst dann je Spalte festlegen, was in der Ergebniszeile erscheinen soll (z. B. die Summe der Spalte)
Gruß, Jürgen

Anzeige
AW: Tabelle mit Makro erweitern
20.08.2014 15:02:13
Andi
Schon einmal vielen Dank(!!), aber das ist beides nicht so ganz was ich mir vorstelle.
Hier mal ein Bild von der Tabelle:
Userbild
Was ich will: Wenn ich auf einen Button drücke (Makro), dann soll die Zeile 7 und 8 einfach unten drunter noch einmal leer (nur mit den Formeln) und am besten mit einer fortlaufenden Nummer aufgeführt werden.
Habe es versucht mit "Makro aufzeichnen" was allerdings auch nicht wirklich zu einem zufriedenstellenden Ergebnis geführt hat.

Anzeige
AW: Tabelle mit Makro erweitern
20.08.2014 15:26:26
Werner
Hallo Jürgen,
lade doch mal die Excel-Tabelle hoch.
Werner

AW: Tabelle mit Makro erweitern
20.08.2014 15:45:41
Andi
Habe die Überschriften und andere Tabellenblätter rausgenommen, deshalb fehlen Teilweise Bezüge. Aber das tut ja nichts zur Sache.
https://www.herber.de/bbs/user/92204.xlsx

Anzeige
AW: Tabelle mit Makro erweitern
21.08.2014 19:22:41
Werner
Hallo Andi,
hab heute morgen mal drüber geschaut. Ist, zumindest für mich, nicht ganz einfach wegen verbundener Zellen. Werd mich aber weiter dran versuchen und mich melden.
Ich stell den Beitrag mal offen, vielleicht schaut ja ein Profi mal drüber.
Werner

AW: Tabelle mit Makro erweitern
23.08.2014 10:58:59
fcs
Hallo Andi,
eine Beispieldatei mit Dummydaten wäre schon besser gewesen.
Das Makro wird durch die verbundenen Zellen schon komplizierter. Zusätzlich müssen die Summenformeln per Makro angepasst werden, da sich die Zelenbezüge nicht automatisch anpassen.
Achte bei deinen Formeln darauf, dass du die Zellbezüge ggf. absolut setzen muss, wenn du im Tabellenbereich in Formeln Zellen aus dem oberen Tabellenbereich verwendest.
Gruß
Franz
Sub Zeile7_8_Kopieren()
Dim wks As Worksheet
Dim ZeileSumme As Long, lngNr As Long, Zeile As Long
Dim Spalte As Long
Set wks = ActiveSheet
With wks
'Zeile mit Summen ermitteln
Zeile = 7
lngNr = 1
Do Until .Cells(Zeile, 1) = "Summenzeile"
Zeile = Zeile + 2
lngNr = lngNr + 1
Loop
ZeileSumme = Zeile
'Zeilen 7+8 kopieren und oberhalb der Summenzeile einfügen
.Range(.Rows(7), .Rows(8)).Copy
.Rows(ZeileSumme).Insert
ZeileSumme = ZeileSumme + 2
'fortlaufende Nr. eintragen und in Zellen ohne Formel Inhalte löschen
For Spalte = 1 To 25
With .Cells(Zeile, Spalte)
Select Case Spalte
Case 1
.Value = lngNr
Case 2 To 5, 10 To 13, 15 To 17, 19 To 21, 25
'verbundene Zellen
.MergeArea.ClearContents
Case 6 To 8
'2 Zeilen, Zellen nicht verbunden
.ClearContents
.Offset(1, 0).ClearContents
Case 9, 14, 18, 22, 23, 24
'Formeln nicht löschen
End Select
End With
Next
'in Summenzeile die Formeln anpassen
For Spalte = 1 To 25
With .Cells(ZeileSumme, Spalte)
Select Case Spalte
Case 1 To 4
'keine Formel
Case 5 To 7, 9 To 11, 14, 15, 18, 19, 22 To 25
'Summenformel
.FormulaR1C1 = "=SUM(R[" & (-ZeileSumme + 7) & "]C:R[-1]C)"
Case 20
'Sonderformel =WENN((SUMME(T7:T8)-I2)

Anzeige
AW: Tabelle mit Makro erweitern
24.08.2014 17:27:35
Werner
Hallo Franz,
von Andi kommt wohl nix.... schade.
Dein Code ist Hammer, wobei ich noch nicht so wirklich alles verstehe, bin halt Anfänger. Kleine Anmerkung am Rande, in deinem Code fehlt im unteren Bereich bei einem Zeilenumbruch ein Unterstrich.
Ich habe mich auch an der Sache versucht, wahrscheinlich (wenn ich deinen Code so sehe) ziemlich umständlich (auf meine Weise halt eben) aber es funktioniert.
Stelle meine Ergüsse auch mal online (aber bitte keinen Lachkrampf kriegen).
https://www.herber.de/bbs/user/92265.xlsm
Gruß Werner

Anzeige
AW: Tabelle mit Makro erweitern
25.08.2014 10:42:14
Andi
Hallo Franz,
vielen Dank für deine Mühe!!
Ich habe zwischenzeitlich allerdings die verbundenen Zellen gelöscht.
Jetzt habe ich versucht den Code entsprechend anzupassen, allerdings funktioniert er nur bei der ersten zu kopierenden Zeile.
Hier die geänderte Version:
Sub Neue_Zeile()
ActiveSheet.Unprotect Password:="123"
Dim wks As Worksheet
Dim ZeileSumme As Long, lngNr As Long, Zeile As Long
Dim Spalte As Long
Set wks = ActiveSheet
With wks
'Zeile mit Summen ermitteln
Zeile = 7
lngNr = 1
Do Until .Cells(Zeile, 1) = "Summenzeile"
Zeile = Zeile + 2
lngNr = lngNr + 1
Loop
ZeileSumme = Zeile
'Zeilen 7+8 kopieren und oberhalb der Summenzeile einfügen
.Rows(8).Copy
.Rows(ZeileSumme).Insert
ZeileSumme = ZeileSumme + 2
'fortlaufende Nr. eintragen und in Zellen ohne Formel Inhalte löschen
For Spalte = 1 To 25
With .Cells(Zeile, Spalte)
Select Case Spalte
Case 1
.Value = lngNr
Case 2 To 5, 10 To 13, 15 To 17, 19 To 21, 25
'verbundene Zellen
.MergeArea.ClearContents
Case 6 To 8
'2 Zeilen, Zellen nicht verbunden
.ClearContents
.Offset(1, 0).ClearContents
Case 9, 14, 18, 22, 23, 24
'Formeln nicht löschen
End Select
End With
Next
'in Summenzeile die Formeln anpassen
For Spalte = 1 To 25
With .Cells(ZeileSumme, Spalte)
Select Case Spalte
Case 1 To 4
'keine Formel
Case 5 To 7, 9 To 11, 14, 15, 18, 19, 22 To 25
'Summenformel
.FormulaR1C1 = "=SUM(R[" & (-ZeileSumme + 7) & "]C:R[-1]C)"
Case 20
'Sonderformel =WENN((SUMME(T7:T8)-I2)

Anzeige
AW: Tabelle mit Makro erweitern
25.08.2014 10:49:03
Andi
Da war ich etwas voreilig. Habe es selbst hinbekommen!!
Vielen Dank :)
    With wks
'Zeile mit Summen ermitteln
Zeile = 7
lngNr = 1
Do Until .Cells(Zeile, 1) = "Summenzeile"
Zeile = Zeile + 1
lngNr = lngNr + 1

AW: Tabelle mit Makro erweitern
26.08.2014 07:46:11
Andi
Ich habe noch eine Frage:
Ich würde mir gerne bei "Km-Stand" in der Summenzeile den letzten Wert in der Liste oben drüber anzeigen lassen. Habe das Formelmäßig so gelöst:
=INDIREKT("V"&VERGLEICH(0;V1:V19;-1))
Allerdings weiß ich nicht, wie ich das in den VBA Code einbaue.
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Tabelle mit Makro erweitern


Schritt-für-Schritt-Anleitung

Um deine Excel-Tabelle zu erweitern und eine neue Zeile durch ein Makro hinzuzufügen, folge diesen Schritten:

  1. Öffne deine Excel-Datei und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu:

    • Klicke im Menü auf Einfügen > Modul.
  3. Kopiere den folgenden VBA-Code in das Modul:

    Sub Neue_Zeile()
       ActiveSheet.Unprotect Password:="123"
       Dim wks As Worksheet
       Dim ZeileSumme As Long, lngNr As Long, Zeile As Long
       Dim Spalte As Long
       Set wks = ActiveSheet
       With wks
           'Zeile mit Summen ermitteln
           Zeile = 7
           lngNr = 1
           Do Until .Cells(Zeile, 1) = "Summenzeile"
               Zeile = Zeile + 2
               lngNr = lngNr + 1
           Loop
           ZeileSumme = Zeile
           'Zeilen 7+8 kopieren und oberhalb der Summenzeile einfügen
           .Rows(8).Copy
           .Rows(ZeileSumme).Insert
           ZeileSumme = ZeileSumme + 2
           'fortlaufende Nr. eintragen und in Zellen ohne Formel Inhalte löschen
           For Spalte = 1 To 25
               With .Cells(Zeile, Spalte)
                   Select Case Spalte
                       Case 1
                           .Value = lngNr
                       Case 2 To 5, 10 To 13, 15 To 17, 19 To 21, 25
                           'verbundene Zellen
                           .MergeArea.ClearContents
                       Case 6 To 8
                           '2 Zeilen, Zellen nicht verbunden
                           .ClearContents
                           .Offset(1, 0).ClearContents
                       Case 9, 14, 18, 22, 23, 24
                           'Formeln nicht löschen
                   End Select
               End With
           Next
           'in Summenzeile die Formeln anpassen
           For Spalte = 1 To 25
               With .Cells(ZeileSumme, Spalte)
                   Select Case Spalte
                       Case 1 To 4
                           'keine Formel
                       Case 5 To 7, 9 To 11, 14, 15, 18, 19, 22 To 25
                           'Summenformel
                           .FormulaR1C1 = "=SUM(R[" & (-ZeileSumme + 7) & "]C:R[-1]C)"
                   End Select
               End With
           Next
       End With
       ActiveSheet.Protect Password:="123"
    End Sub
  4. Schließe den VBA-Editor und kehre zur Excel-Oberfläche zurück.

  5. Füge einen Button hinzu, der das Makro ausführt:

    • Gehe zu Entwicklertools > Einfügen > Button (Formularsteuerung).
    • Ziehe einen Button auf dein Arbeitsblatt und weise ihm das Makro Neue_Zeile zu.

Jetzt kannst du den Button klicken, um eine neue Zeile in deiner Tabelle zu erweitern.


Häufige Fehler und Lösungen

  • Makro funktioniert nicht: Stelle sicher, dass das Makro aktiviert ist und die Sicherheitsstufe in Excel so eingestellt ist, dass Makros ausgeführt werden dürfen.
  • Verbundenen Zellen: Wenn deine Tabelle verbundene Zellen hat, kann dies das Kopieren und Einfügen erschweren. Achte darauf, diese zu entfernen oder anzupassen.
  • Formeln passen sich nicht an: Überprüfe, ob du die Zellbezüge in deinen Formeln auf absolute Bezüge gesetzt hast, um Probleme zu vermeiden.

Alternative Methoden

Falls du kein Makro verwenden möchtest, kannst du auch die Funktion "Tabelle in Excel erweitern" nutzen, um deine Daten in einer Excel-Tabelle zu formatieren. Dadurch bleibt die Formatierung automatisch erhalten, und du kannst die Ergebniszeile für Summen verwenden, ohne manuell Formeln anpassen zu müssen.

  1. Wähle die gesamte Tabelle aus.
  2. Gehe zu Start > Als Tabelle formatieren.
  3. Aktiviere in den Tabellentools die Option für die Ergebniszeile.

Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du eine Excel-Tabelle mit einem Makro erweiterst:

  • Angenommen, du hast eine Tabelle mit den Überschriften „Produkte“ und „Verkäufe“. Wenn du auf den Button klickst, wird eine neue Zeile hinzugefügt, die die gleichen Formeln wie die vorherige Zeile enthält, jedoch mit einem fortlaufenden Nummerierungssystem in der ersten Zelle.

Tipps für Profis

  • Verwende benannte Bereiche: Das erleichtert die Handhabung von Zellbezügen in Formeln.
  • Setze Dropdowns für Eingaben: Damit kannst du die Eingaben in deiner Tabelle standardisieren.
  • Schütze deine Tabelle: Aktiviere den Blattschutz, um versehentliche Änderungen zu vermeiden, nachdem du das Makro ausgeführt hast.

FAQ: Häufige Fragen

1. Wie kann ich das Makro anpassen, um mehrere Zeilen gleichzeitig hinzuzufügen?
Du kannst den Code anpassen, indem du eine Schleife hinzufügst, die die Anzahl der gewünschten neuen Zeilen iteriert.

2. Wie baue ich eine Formel in den VBA-Code ein?
Du kannst die .FormulaR1C1-Eigenschaft verwenden, um Formeln in die Zellen zu setzen. Beispiel: .FormulaR1C1 = "=SUM(R[-1]C:R[-2]C)".

3. Was mache ich, wenn das Makro nicht reagiert?
Überprüfe die Makrosicherheitseinstellungen und stelle sicher, dass das richtige Makro zu dem Button zugewiesen ist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige