Excel 2007: Zeile automatisch einfügen, wenn vorherige Zeile ausgefüllt ist

Excel 2007: Zeile automatisch einfügen, wenn vorherige Zeile ausgefüllt ist

Ich möchte ein Arbeitsblatt erstellen, das als gedruckte Quittung für Kunden verwendet werden kann. Dies ist das grundlegende Layout:

  • Kundenkontaktdaten (Name, Adresse usw.) sind feste Felder, die leer sein können
  • Kopfzeile: „Artikel|Menge|Preis|Gesamt“
  • Dynamische Tabelle mit beliebig vielen Zeilen, eine für jeden Artikel, den der Kunde kauft
  • Fußzeile mit der Gesamtzahl der Artikel und dem Gesamtbetrag

Ich habe Probleme damit, die dynamische Tabelle zum Laufen zu bringen. Derzeit füge ich für jeden neuen Artikel manuell eine Zeile ein, aber das ist in Situationen, in denen viel zu tun ist, umständlich. Ich möchte, dass Excel standardmäßig eine leere Zeile anzeigt und dann jedes Mal eine neue Zeile einfügt, wenn die vorherige Zeile Daten enthält, wobei die Fußzeile automatisch eine Zeile nach unten verschoben und die Formel zur Berechnung der Gesamtmenge und des Gesamtbetrags aktualisiert wird.

Ist das überhaupt möglich?

Antwort1

Nur als Warnung an Sie und alle anderen, die dies versuchen:

Über Folgendes sollten Sie jetzt nachdenken:

  • wie oft werde ich dies pro Kunde verwenden?
  • wie viele Kunden gibt es?
  • wie gebe ich diese Elemente ein?
  • wie viele verschiedene Artikel gibt es?

Das sind die wichtigsten Fragen. Ich habe ziemlichgenau, was Sie für ein sehr kleines Unternehmen mit etwa 3 Quittungen pro Monat versuchen.

Wie immer, bitte schnell & günstig & nur Excel. Allerdings hat niemand diese Fragen oben gestellt. Hauptsächlich wegen günstig & nur Excel. Und jetzt ist es so offensichtlich, wie viel Zeit verloren geht, wenn ein Beleg gesucht, korrigiert, aber vor allem, wenn die Artikel hinzugefügt werden. Ganz zu schweigen davon, wie viele verschiedene Formen desselben Artikels existieren. Dies mit Excel zu korrigieren ist zwar möglich, aber meiner Meinung nach eine echte Qual. Auch der Kunde wurde überzeugt, ein EPR ist jetzt eingerichtet.

Dies ist eine Datenbankaufgabe. Es ist eines der besten Beispiele für eine Datenbankaufgabe!

Darüber hinaus kann sich für Kleinunternehmen auch ein ERP-System lohnen. Hier in Deutschland würde ich Ihnen JTL-Wawi empfehlen.

Wenn Ihnen dieser Schritt jedoch zu groß erscheint, sollten Sie ernsthaft über die Verwendung von Access nachdenken.

Einige Vorteile:

  • Sie können Ihre Kunden verwalten
  • Sie können Ihre Artikel verwalten
  • Sie können Ihr dynamisches Verhalten ändern, um
  • Sie können Ihre Belege einfach verwalten
  • Sie können weiterhin Excel als Ausgabesystem verwenden

Wie würde das funktionieren?

Sie hätten einige Tabellen für Kunden und Artikel sowie für Quittungen. Die Quittungstabelle würde einen Kunden mit seinen Artikeln und anderen quittungsrelevanten Attributen verbinden.

Dann könnten Sie einen Bericht für eine einfache Quittung erstellen und ihn aus Access ausdrucken. Oder verwenden Sie Excel, um eine Quittung auszuwählen, die Daten abzurufen und auszudrucken. Da die Daten vorbestimmt wären, wüssten Sie, wie viele Zeilen/Spalten kommen und in welchem ​​Kontext sie stehen.

Allerdings wurde dieses Rad schon so oft erfunden, dass Sie sich die bereits existierenden ansehen sollten ;)

Bearbeiten

Eine Lösung basierend auf Ihrer Verhaltensanfrage könnte dieser Versuch hier sein:

https://stackoverflow.com/questions/12604274/excel-vba-is-there-a-textchanging-textchanged-or-a-similar-event-or-how-to/12604570#12604570

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Target.Column = clngColumnRightToLastGrade Then
    Application.EnableEvents = False
    'offset selection, one row down, two cols to left
    Target.EntireRow.Insert (xlShiftDown) 'insert new row
    Target.Offset(1, -2).Select
    Application.EnableEvents = True
  End If
End Sub

Sie könnten natürlich Changestattdessen das Ereignis verwenden und müssten dieses Verhalten möglicherweise auf den maximalen Bereich Ihrer dynamischen Liste oder auf das Arbeitsblatt davon beschränken.

Oder machen Sie einfach ein Makro per Tastenkombination zugänglich, um diese Zeile hier auszuführen:

Target.EntireRow.Insert (xlShiftDown) 'insert new row

Sie müssen die aktuell ausgewählte Zelle bestimmen, um den TargetBereich zu haben.

verwandte Informationen