Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Preisliste - Makro zum Enfügen und Löschen von Zeilen/Produkten
#1
Hallo Zusammen liebe Excel-Freunde,

ich bin auf der Suche nach Informationen zu meinem Problem auf euer schönes Excel-Forum gestoßen und hoffe ihr könnt mir hier helfen! Zu meiner Situation ich bin momentan im E-commerce tätig und habe mich noch nicht so intensiv mit Excel beschäftigen können.

Hier meine Problemstellung:

Wir hatten bis jetzt immer für jeden Kunden eine Preisliste und mussten uns mit Ordnern und Unterordnern beschäftigen und uns durchs Datenchaos kämpfen. Nun bin ich dabei eine Masterpreisliste zu erstellen (Einen Liste, sie zu knechten, sie alle zu finden :P). Soweit so gut ich erstelle mein Layout, füge Überschriften und sonstiges ein und habe damit meine Basispreisliste. Nun kopiere ich diese, sagen wir als Beispiel für 10 Kunden und stelle diese Kopien in relation zum Tabellenblatt "Basis". Lediglich Kundenspezifische Konditionen werden, außerhalb des Druckbereiches, auf den einzelnen Tabellenblättern gepflegt. Wie zum Beispiel % Rabatt für EK netto Berechnung.

Jetzt zu der Herausforderung, die ich gerne lösen würde. Ich würde gerne zwei Makros auf dem Basisblatt verbauen. Zum einen ein Makro, dass in der markierten Zeile an der gleichen Stelle auf allen Preislisten eine Zeile hinzufügt und diese zum Basisblatt verknüpfen (Anlage eines neuen Artikels). Die andere Funktion wäre dann ein Produkt bzw. eine Zeile entfernen auf alle Tabellen blättern / Kunden.

Ich habe in einem englischen Forum ein Makro gefunden, dass eigentlich nur eine Zeile in alle Blätter einfügen soll. Dies war am Anfang bei mir auch so aber nach weiterem "rumdoktorn" kopiert das Makro mir nun die markierte Zeile und fügt diese direkt als Verknüpfung zur Basis ein (Ich habe keine Ahnung warum). Also eigentlich eine "Fehlfunktion", obwohl es im Endeffekt fast das Ergebnis liefert das ich möchte. 

Hier zum Marko:

Es sollte eigentlich den "NewName" in die Spalte B packen, da in Spalte A immer die Kategorie steht.

Sub Schaltfläche1_Klicken()
Dim Response As String, NewName As String
Dim ws As Worksheet
Response = MsgBox("Ist die richtige Zeile markiert, in die ein Artikel eingefügt werden soll?", vbYesNo)
If Response = vbNo Then Exit Sub
NewName = InputBox("Hier eine Artikelnummer einfügen")
If NewName = vbNullString Then
    MsgBox "Ungültige Eingabe"
    Exit Sub
End If
r = ActiveCell.Row
'note these must be the names of the sheets as they appear
'on the worksheet tab
For Each ws In Sheets(Array("Basis", "OBI", "Bauhaus"))
With ws
    .Rows(r).EntireRow.Insert
    .Cells(r, 1) = NewName
    .Cells(r - 1, 2).Resize(2, 256).FillDown
End With
Next
End Sub

Ich habe euch eine bereinigte Datei der Preisliste angefügt, damit ihr direkt sehen könnt worum es geht. Ich hoffe ihr könnt mir hier weiterhelfen. 

Vielen dank schon mal für eure Mühen!

Viele Grüße
Sebastian


Angehängte Dateien
.xlsm   Preislisten Beispiel.xlsm (Größe: 72,57 KB / Downloads: 5)
Antworten Top
#2
Hallo,

mit diesem Code

.Cells(r - 1, 2).Resize(2, 256).FillDown

übernimmst Du die Formeln aus der Zeile oberhalb der eingefügten Zeile in die neue … Wenn das nicht gewollt ist, lass sie weg.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#3
Hallo Schauan,

vielen Dank für die Rückmeldung. Dann kann dieses Makro also so bleiben, wunderbar!

Hast du evtl. einen Ansatz, wie ich dies umschreiben müssten, damit ich einen Artikel in jeder Mappe löschen kann?

Viele Grüße
Sebastian
Antworten Top
#4
Hallo Sebastian,

das kann so gehen:

Code:
Sub Schaltfläche2_Klicken()
Dim Response As String, NewName As String
Dim ws As Worksheet
Response = MsgBox("Ist die richtige Zeile markiert, in die ein Artikel eingefügt werden soll?", vbYesNo)
If Response = vbNo Then Exit Sub
Rows(ActiveCell.Row).Delete Shift:=xlUp
End Sub


Allerdings ist nach dem Löschen per Makro die Zeile richtig weg. Das kannst Du nicht rückgängig machen.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • SebastianST1
Antworten Top
#5
Hey,

danke schon mal!

Jetzt muss ich nur noch gucken, wie ich 

For Each ws In Sheets(Array("Basis", "OBI", "Bauhaus"))

einbaue. Damit diese Zeile nicht nur in der Basisliste gelöscht wird, sondern in allen Mappen.
Antworten Top
#6
Hi,

bitte beachten:

Arbeitsblatt = Blatt = Tabellenblatt = Register = Sheet ...
Mappe = Datei = mehrere Blätter in einer Datei
Antworten Top
#7
Hey,

ja mein Fehler. Meinte in allen Tabellen-blättern!

Exclamation
Antworten Top
#8
Hallo Sebastian,

das ist auch wieder Easy. Du hast im Code diese zeile:

Rows(ActiveCell.Row).Delete Shift:=xlUp

Da kommt die Schleife drumherum und das ws davor Smile.

For Each ws In Sheets(Array("Basis", "OBI", "Bauhaus"))
ws.Rows(ActiveCell.Row).Delete Shift:=xlUp
Next


Mach aber bei Test vor dem Löschen eine Sicherheitskopie ...
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • SebastianST1
Antworten Top
#9
Vielen Dank Schauan,

du hast mir hier sehr geholfen!

Entschuldige die späte Antwort!

Ich hoffe ich finde bald mal die Zeit um mich selbst intensiver mit Excel auseinander zu setzen :).

Nochmals Danke!

Viele Grüße
Sebastian
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste