Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1908to1912
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

Text kopieren und in Leer Zeile einfügen

Text kopieren und in Leer Zeile einfügen
25.11.2022 15:04:19
Ron
Hallo Zusammen,
ich habe eine Excel entworfen in dem anhand eines Aufnahmesblattes ein Leistungsverzeichnis geschrieben wird. Da die Excel inzwischen knapp 150 verschiedene Positionen hat und es sehr mühseelig ist die Zeilen zu ändern wenn sich die Positionen verschieben sollten und es auch ewig dauert bis das Leistungverzeichnis generiert wirdist wollte hier fragen ob ihr eine bessere Lösung findet.
Ich habe es schon versucht als Schleife oder Loop umzugestallten aber mir fehlen einfach die Kenntnisse dies sauber zu lösen. Ich hänge schon seit ewigkeiten dran aber komme gar nicht weiter. Deshalb wende ich mich an euch.
Was das Makro macht:
Er überprüft ob zu der angegebene Arbeit aus dem Tabellenblatt(Aufnahmeblatt) der wert größer ist als 1 wenn ja soll er die Summen zusammen nehmen und dies ins Tabellenblatt(LV) übertragen. Aus dem Tabellenblatt(Fließtext) soll er sich die dazugehörige Position kopieren und in Tabellenblatt(LV) an einer bestimmten Zeile einsetzten.
Wenn aber im Tabellenblatt(Aufnahmeblatt) der wert 0 ist soll er gar nichts machen
Im Großen und Ganzen funktioniert das so wie ich das haben will. Problem ist hier nur ich muss so festgelegte Zeilen definieren und die Zeilen in dennen nichts steht löscht er automatisch alle Leere Zeilen. Und das dauert sehr lange bis die Excel damit durch ist.
Meine Idee ist das er immer in die nächste leere Zeile den Text einfügen soll mit einer Schleife oder Loop aber ich habe keine ahnung wie ich das anstellen soll.
Hier ein Ausschnitt

'1.01 Abdecken
If Application.WorksheetFunction.SumIf(Worksheets("Aufnahmeblatt").Columns(2), "Abdeckarbeiten", Worksheets("Aufnahmeblatt").Columns(7)) > 0 Then
Worksheets("Fließtext").Range("A1:H1").Copy
Worksheets("LV").Range("A22:H22").PasteSpecial
Rows("22:22").RowHeight = 13
Worksheets("Fließtext").Range("A2:H2").Copy
Worksheets("LV").Range("A23:H23").PasteSpecial
Rows("23:23").RowHeight = 121
Cells(22, 4) = Application.WorksheetFunction.SumIf(Worksheets("Aufnahmeblatt").Columns(2), "Abdeckarbeiten", Worksheets("Aufnahmeblatt").Columns(7))
Else
Cells(22, 1) = ""
Cells(22, 2) = ""
Cells(22, 4) = ""
Cells(22, 5) = ""
Cells(23, 2) = ""
Cells(23, 4) = ""
End If
'1.02 Tapeten entfernen (Wände)
If Application.WorksheetFunction.SumIf(Worksheets("Aufnahmeblatt").Columns(2), "Tapeten entfernen (Wände)", Worksheets("Aufnahmeblatt").Columns(7)) > 0 Then
Worksheets("Fließtext").Range("A3:H3").Copy
Worksheets("LV").Range("A24:H24").PasteSpecial
Rows("24:24").RowHeight = 13
Worksheets("Fließtext").Range("A4:H4").Copy
Worksheets("LV").Range("A25:H25").PasteSpecial
Rows("25:25").RowHeight = 44
Cells(24, 4) = Application.WorksheetFunction.SumIf(Worksheets("Aufnahmeblatt").Columns(2), "Tapeten entfernen (Wände)", Worksheets("Aufnahmeblatt").Columns(7))
Else
Cells(24, 1) = ""
Cells(24, 2) = ""
Cells(24, 4) = ""
Cells(24, 5) = ""
Cells(25, 2) = ""
Cells(25, 4) = ""
End If
Nachdem Excel mit dem ganzen durch ist also 150 x löscht er alle Leeren Zeilen

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

Betreff
Datum
Anwender
Anzeige
AW: Text kopieren und in Leer Zeile einfügen
25.11.2022 15:55:17
captainkeksxx
Also was das verschieben der Bereiche angeht: Du kannst in dem Namensmanager im Reiter "Formeln", bestimmten Bereiche Namen geben und diese in VBA benutzen. Z.B gibst du dem Bereich A22:H22 den Name "LV_Aufgabe_Paste". Dann kannst du in VBA mit

Worksheets("LV").Range("LV_Aufgabe_Paste")
darauf zugreifen (müsste so).
Wird jetzt eine Zeile neu hinzugefügt und A22:H22 wird zu A23:H23, dann ist "LV_Aufgabe_Paste" ebenfalls der Bereich A23:H23 und du musst es nicht in VBA anpassen.
AW: Text kopieren und in Leer Zeile einfügen
25.11.2022 16:51:01
Ron
Hallo captainkeksxx,
das man das machen kann weiß ich aber das bringt mir nichts da die Zeilen auch zu beginn gelöscht werden. Außerdem hätte ich dann auch wieder so viele Zeilen die VBA durcharbeiten muss.
Ich möchte gerne, dass das Makro überprüft ob die Zeile leer ist und wenn nicht soll er die überspringen und die nächste Prüfen bis eine gefunden wird und dort einfügt. So bräuchte ich nicht jede Position im Tabellenblatt bestimmen.
Aber trotzdem danke für deine Antwort.
Anzeige
AW: Text kopieren und in Leer Zeile einfügen
25.11.2022 18:01:42
Yal
Hallo Ron,
ich verstehe nicht so ganz genau, was deine Weg ist, aber ich habe eine Vorstellung, was dein Ziel ist.
Du hast eine Liste von Leistungen, inkl. Beschreibung (= Fliesstext) und wahrscheinlich Grundpreis
Diese Leistung kann man in "Aufnahme" einzel auswählen und quantifizieren.
Am Ende soll jede Zeile von "Aufnahme" kopiert inkl. zusätzliche Information hinzugefügt wie z.B. Beschreibung (=Fliesstext) und -in meiner Vorstellung- der Grund- und Endpreis (Menge x Grundpreis).
Dafür folgende Elemente:
_ das Leistungsverzeichnis, definiert als "aktive Tabelle" (siehe Menü "Einfügen", "Tabelle")
_ eine Aufnahmeblatt mit auch einer aktive Tabelle und 2 Spalten: Leistung und Menge.
_ in Spalte "Leistung" von "Aufnahme" befindet sich eine "Datengültigkeitsprüfung" (aus dem Menü "Daten"), was dazu führt, dass alle Leistungen aus dem Leistungsverzeichnis als Dropdown einzel auswählbar sind. Da aktive Tabelle, kommt diese Dropdown bei jede neue Zeile unter der Tabelle (Tricky: zuerst die Menge eintragen, wennauch Dummy-Menge, dann fügt sich den Dropdown ein)
_ ist alles eingetragen, werden die beiden aktive Tabellen in ein Power Query Abfrage kombiniert (gejoint) und ergeben den Kostenvoranschlag.
https://www.herber.de/bbs/user/156396.xlsx
Ändert sich eine Leistung oder eine Menge in der Aufnahme, oder eine Beschreibung oder Preis in LV, einfach Rechtsklick auf dem KV und "aktualisieren" (oder Strg+Alt+F5).
Kommt eine neue Leistung in Leistungsverzeichnis hinzu -direkt unter der vorhandene Tabelle- ergänzgt sich die Tabelle und dem Dropdown von selbst.
Einfach probieren.
Keine Makro. Abfragen kannst Du im Menü "Daten", "Abfragen anzeigen" sichtbar machen.
Perfomance sollte unter 100.000 Zeilen kein Problem sein.
VG
Yal
Anzeige

319 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige