Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1480to1484
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

Artikelpreise in mehreren Rezepten ändern

Artikelpreise in mehreren Rezepten ändern
17.03.2016 17:43:13
Michael
Liebe Excel-Profis!
Auf meiner Suche nach Erleuchtung im Bereich Excel führt kein Weg an euch vorbei, deshalb:
Vorgeschichte:
Während meines Studiums habe ich (zum Spaß) ein kleines Menüplanungstool geschrieben, siehe hier:
https://www.herber.de/bbs/user/104428.xlsm
Mit geschrieben meine ich viel Recherche, viel Trial and Error, viel Support hier von herber, etc.
Das Programm lässt einen Rezepturen anlegen, macht die einzelnen Artikel nach einmaliger Eingabe per Dropdown verfügbar, und sammelt die Rezepte für später kumulierte Bestellungen.
Man kann einzelne Rezepte als "Unterrezepte" bzw Beilagen/Side order definieren, die dann später, mit "*" markiert, direkt als ein Artikel verfügbar sind.
Aus allen verfügbaren Gerichten kann man im Tab "Ordering collection" später Mengen eintragen und eine nach Artikeln kumulierte Bestellliste erstellen.
Problem:
Die Preise und Mengen für die Listen holt sich das Programm immer direkt aus den Rezepten (damit die auch mal ändern kann). Ich will aber Preise in "pricelist" nur einmal ändern müssen und diese Änderung dann für alle Rezepte übertragen lassen.
Ich bräuchte also einen Button in "pricelist", der nach Ändern einzelner Preise folgendes macht:
-Nimm den Preis des ersten Artikels ARTIKEL1 und dazu gehörigen Preis PREIS1
-Gehe in jedes vorhandene Rezepturblatt, suche ARTIKEL1, wenn gefunden, füge PREIS1 ein
usw.
-am Schluss speichern
Folgendes scheint irgendwie nicht zu funktionieren (ohne Fehlermeldung):
Sub Schaltfläche1_Klicken()
Application.ScreenUpdating = False
Dim anzahlArtikel, AnzahlListe, PreisNeu, rezepte, RezeptZeile As Integer
Dim ArtikelName As String
anzahlArtikel = WorksheetFunction.CountA(Sheets(3).Range("A2:A300")) + 1
For AnzahlListe = 2 To anzahlArtikel
ArtikelName = ThisWorkbook.Sheets(3).Cells(anzahlArtikel, 1).Value
PreisNeu = ThisWorkbook.Sheets(3).Cells(anzahlArtikel, 3).Value
For rezepte = 7 To ThisWorkbook.Sheets.Count
For RezeptZeile = 3 To 20
If ThisWorkbook.Sheets(rezepte).Cells(RezeptZeile, 1) = ArtikelName Then
ThisWorkbook.Sheets(rezepte).Cells(RezeptZeile, 4) = PreisNeu
End If
Next RezeptZeile
Next rezepte
Next AnzahlListe
End Sub
Ich hoffe wie gesagt auf Erleuchtung und darauf, dass ich nur irgendeinen doofen Denkfehler gemacht habe. Nachdem ich "Selbstlerner" bin, kann es durchaus sein, dass mir rudimentäre Programmierkenntnisse abgehen.
Vielen Dank schon mal im Voraus!
Michael

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

Betreff
Datum
Anwender
Anzeige
AW: Artikelpreise in mehreren Rezepten ändern
18.03.2016 08:53:52
UweD
Hallo
ich denke hier liegt der Fehler:
ArtikelName = ThisWorkbook.Sheets(3).Cells(anzahlArtikel, 1).Value
PreisNeu = ThisWorkbook.Sheets(3).Cells(anzahlArtikel, 3).Value
Du durchsuchst immer nach dem gleichen Element
so müsste es gehen
    ArtikelName = ThisWorkbook.Sheets(3).Cells(AnzahlListe, 1).Value
PreisNeu = ThisWorkbook.Sheets(3).Cells(AnzahlListe, 3).Value

gruß UweD

AW: Artikelpreise in mehreren Rezepten ändern
18.03.2016 09:24:52
UweD
Ich hab deinen Code noch was schneller gemacht.
- Anstelle, dass immer die Zeilen von 3 bis 20 durchlaufen werden, jetzt nur noch Zeilen, in denen auch was steht.
- Beim Ändern des Preises wird des Sprung zum "Worksheet_Change" Event unterbunden
- Fehlerbehandlung (um auch bei enem evtl Fehler die Events wieder einzuschalten)

Sub Schaltfläche1_Klicken()
On Error GoTo Fehler
Application.ScreenUpdating = False
Dim anzahlArtikel, AnzahlListe, PreisNeu, rezepte, RezeptZeile
Dim ArtikelName As String
anzahlArtikel = WorksheetFunction.CountA(Sheets(3).Range("A2:A300")) + 1
For AnzahlListe = 2 To anzahlArtikel
ArtikelName = ThisWorkbook.Sheets(3).Cells(AnzahlListe, 1).Value
PreisNeu = ThisWorkbook.Sheets(3).Cells(AnzahlListe, 3).Value
For rezepte = 7 To ThisWorkbook.Sheets.Count
For Each RezeptZeile In ThisWorkbook.Sheets(rezepte) _
.Range("A3:A20").SpecialCells(xlCellTypeConstants, 3)
If RezeptZeile.Value = ArtikelName Then
Application.EnableEvents = False
RezeptZeile.Offset(, 3) = PreisNeu
Application.EnableEvents = True
End If
Next RezeptZeile
Next rezepte
Next AnzahlListe
'*** Fehlerbehandlung
Err.Clear
Fehler:
If Err.Number  0 Then MsgBox "Fehler: " & Err.Number & vbLf & Err.Description: Err.Clear
Application.EnableEvents = True
End Sub
Gruß UweD

Anzeige
AW: Artikelpreise in mehreren Rezepten ändern
18.03.2016 13:26:58
Michael
Hallo UweD,
zur ersten Rückmeldung: Juhu, wirklich nur dummer Fehler von mir, falschen Counter eingetragen. Herzlichen Dank! Ich werde mir merken, die Benennung noch spezieller zu machen, damit das nicht mehr vorkommt.
Zum zweiten: Super, noch mehr herzlichen Dank! Ich werde mir den Code genau anschauen, um beim nächsten Mal noch ein wenig professioneller rangehen zu können.
Liebe Grüße
Michael

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige