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

Forumthread: Zeilen automatisch einfügen, wenn

Zeilen automatisch einfügen, wenn
14.02.2009 23:23:00
John
Hallo,
ich habe folgendes Problem.
ich erstelle gerade eine xlsDatei, in der Bestellungen eingegeben werden können. Die Anzahl der möglichen Bestellungen kann ich nicht abschätzen. Somit fällt die Option des einfachen DropDown.
In Spalte A werden die Bestellnummern eingegeben (A10 ist die erste Position), in Spalte AA wird ein Betrag angegeben, der mit Hilfe der Summenformel aus bestimmten Spalten in der entsprechenden Zeile ermittelt wird (AA10 enthält die erste Summe)
Wie muss ich den VBA - Befehl schreiben, dass bei Eingabe einer Bestellnummer in A10 automatisch eine neue Zeile eingefügt wird (also die neue Zeile ist dann A11). Die Summenformel in AA10, die die Summe für die Zeile 10 angibt, soll in die neu eingefügte Zeile A11 übernommen werden (die soll natürlich die Summe der Zeile 11 wiedergeben).
Wenn ich dann eine Bestellnummer in A11 eingebe, soll wieder eine neue Zeile eingefügt werden.
Ich danke schon mal für eure Hilfe
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilen automatisch einfügen, wenn
14.02.2009 23:58:00
Josef
Hallo John,
am einfachsten geht das, wenn man genügend Zeilen sozusagen auf Vorrat anlegt und diese ausblendet.
Bei Bedarf blendet man dann die Zeilen wieder ein.
Du kannst deine Datei hochladen, dann schau ich mir das an.
Gruß Sepp

Anzeige
AW: Zeilen automatisch einfügen, wenn
15.02.2009 00:17:00
Uwe
Hi,
ich denke, das klappt am Beste mit einem Klassenmodul Worksheet_Change und AutoFill. Aber Sepp hat recht, mit einer hochgeladenenen Beispieldatei kann Dir bestimmt besser geholfen werden.
Gruß
Uwe
(:o)
AW: Zeilen automatisch einfügen, wenn
15.02.2009 17:59:00
Daniel
Hi
man könnte es z.B. über dieses Makro lösen, das Makro muss ins Modul des Tabellenblatts:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row  1 Then Exit Sub
If Target.Cells.Count > 1 Then Exit Sub
Application.EnableEvents = False
If Target.Value = "" Then
Cells(Target.Row, "AA").Value = ""
Else
Cells(Target.Row, "AA").FormulaR1C1 = Range("AA10").FormulaR1C1
End If
Application.EnableEvents = True
End Sub


die Formel muss allerdings schon in AA10 stehen, da diese kopiert wird.
dh. sollte sich die Formel ändern, brauchst du das Makro nicht anpassen.
Gruß, Daniel

Anzeige
AW: Zeilen automatisch einfügen, wenn
16.02.2009 19:12:00
John
Danke erst mal für die Hilfen, aber ich habe ein paar Dinge dann doch selber lösen können. Natürlich wie es so ist, treten neue Probleme auf. Um euch das aber zu veranschaulichen, habe ich meinen VBA Code mal unten angeführt:
Option Base 1

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Zeile As Long
Zeile = activecell.Row
If Target.Row  1 Then Exit Sub
If activecell = 1 Then
activecell(activecell + 1, 1).EntireRow.Insert                                       _
Range(Cells(Zeile + 1, "G"), Cells(Zeile, "J")).FillDown
End If
End Sub


Das Makro funktioniert so weit, wenn ich in eine entsprechende Zeile der Spalte A eine 1 eingebe. Es wird aber erst ausgeführt, wenn ich mit den Pfeiltasten oder mit der Maus die Zelle mit der 1 auswähle.
Ich hätte gerne, dass das Makro ausgeführt wird, wenn man die Zelle in der die 1 eingetragen wird verlässt (also, wenn man in eine andere Zelle geht).
Dann was eig noch viel wichtiger ist, eigentlich soll in die Zellen der Spalte A (diese sind ja die die bedingeung für das Makro) Bestellnummern eingetragen werden. D.h. wenn in der activecell (Spalte A) eine Bestellnummer steht ( in Form von : 290198) soll Then ausgeführt werden.
Es gibt doch irgendeine IsNumeric funktion um zu prüfen, ob die Eingabe numerisch ist.
Dann wäre es noch schön, wenn das makro pro Zelle nur einmal ausgeführt wird. Also wenn die Bestellnummer in einer Zelle eingegeben worden ist, dass das Makro dann nur einmal für diese Zelle ausgeführt wird.
So, das wars erst mal, ich hoffe das ihr wisst was ich noch brauche.
Tausend dank für eure Tips

Anzeige
AW: Zeilen automatisch einfügen, wenn
16.02.2009 19:37:00
Josef
Hallo John,
das kann man doch alles ohne VBA nur mit Bordmitteln lösen.
Hier ein Beispiel unter Verwendung der Listen-Funktion (> Daten > Liste)
https://www.herber.de/bbs/user/59514.xls
Gruß Sepp

Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Zeilen automatisch einfügen in Excel


Schritt-für-Schritt-Anleitung

Um in Excel automatisch eine neue Zeile einzufügen, wenn du eine Bestellnummer eingibst, kannst du VBA verwenden. Folge diesen Schritten:

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

  2. Füge ein neues Modul hinzu:

    • Klicke mit der rechten Maustaste auf den entsprechenden Arbeitsblattnamen im Projekt-Explorer.
    • Wähle „Einfügen“ > „Modul“.
  3. Füge den folgenden VBA-Code ein:

    Private Sub Worksheet_Change(ByVal Target As Range)
       If Target.Column = 1 And Target.Row > 9 Then
           If IsNumeric(Target.Value) And Target.Value <> "" Then
               Application.EnableEvents = False
               Target.Offset(1, 0).EntireRow.Insert
               Target.Offset(1, 26).FormulaR1C1 = Range("AA10").FormulaR1C1
               Application.EnableEvents = True
           End If
       End If
    End Sub
  4. Speichere die Datei als Makro-fähige Datei (z.B. .xlsm).

  5. Teste das Makro, indem du eine Bestellnummer in eine Zelle der Spalte A eingibst.


Häufige Fehler und Lösungen

  • Fehler: Nichts passiert, wenn ich eine Zahl eingebe.

    • Lösung: Stelle sicher, dass der VBA-Code im richtigen Arbeitsblatt-Modul eingefügt wurde und dass „Makros aktivieren“ in deinen Excel-Einstellungen erlaubt ist.
  • Fehler: Die Formel wird nicht in die neue Zeile kopiert.

    • Lösung: Überprüfe, ob die Formel in Zelle AA10 korrekt ist, da diese kopiert wird, wenn eine neue Zeile eingefügt wird.

Alternative Methoden

Wenn du keine VBA nutzen möchtest, kannst du auch mit Excel-Formeln arbeiten:

  1. Verwende die Listen-Funktion:

    • Markiere die Daten und gehe zu „Daten“ > „Liste“.
    • Diese Methode kann dir helfen, automatisch leere Zeilen einzufügen, wenn deine Liste wächst.
  2. Nutze die „Tabelle“-Funktion:

    • Wandle deinen Datenbereich in eine Tabelle um (Tabelle > Als Tabelle formatieren).
    • Excel wird dann automatisch neue Zeilen einfügen, wenn du neue Daten am Ende der Tabelle eingibst.

Praktische Beispiele

  • Beispiel mit Bestellnummern: Wenn du in Zelle A10 die Bestellnummer 290198 eingibst, wird in A11 automatisch eine neue Zeile eingefügt, und die Summenformel aus AA10 wird in AA11 übernommen.

  • Beispiel mit anderen Spalten: Du kannst ähnliche VBA-Codes für andere Spalten anpassen, um dort ebenfalls automatisch neue Zeilen einzufügen, z.B. in Spalte B für Artikelbezeichnungen.


Tipps für Profis

  • Verwende die Application.EnableEvents-Eigenschaft: Dies verhindert, dass das Makro sich selbst erneut ausführt, was zu einer Endlosschleife führen könnte.

  • Kombiniere VBA mit bedingten Formatierungen: So kannst du visuell hervorheben, wenn eine neue Zeile eingefügt wurde.

  • Teste deine Makros gründlich: Führe verschiedene Eingaben durch, um sicherzustellen, dass dein Makro in allen Fällen funktioniert.


FAQ: Häufige Fragen

1. Frage
Wie kann ich sicherstellen, dass nur einmal pro Zelle das Makro ausgeführt wird?
Antwort: Du kannst eine weitere Bedingung in deinen VBA-Code einfügen, die prüft, ob die Zelle bereits bearbeitet wurde, bevor das Einfügen erfolgt.

2. Frage
Kann ich das Makro auch in einer bestimmten Excel-Version verwenden?
Antwort: Ja, die grundlegende VBA-Funktionalität ist in den meisten modernen Excel-Versionen (ab Excel 2010) verfügbar. Achte darauf, dass du eine Makro-fähige Datei speicherst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige