Formel für Berechnung - welche?

Hallo Excel-Profis,

ich bitte um Unterstützung.

Folgendes Problem:
Ich habe 5 Artikel mit einem festen Startpreis.
Ich möchte 5 Schaltflächen dazu machen, für jeden Artikel.
Wenn man auf eine Schaltfläche klickt, soll der Preis des Artikels um 5 ct steigen, gleichzeitig die Preise der anderen um 4/5 ct fallen, usw.

Artikel1 1€
Artikel2 2€
Artiekl3 3€
Artikel4 4€
Artikel5 5€

Die Schaltflächen zu machen ist kein Problem, aber wie geht es weiter?
Welche Formel nehme ich, und wohin schreibe ich sie?

Kann mir jemand weiterhelfen?
Schöne Grüße
Lahela

Hallo Lahela,

du muss die entsprechenden Formeln im Visual Basic Code zum entsprechenden Button eintragen.

Lösung 1:

Private Sub CommandButton1\_Click()
'Button für Preis 1
'Preise stehen in den Zellen A2 bis E2
 PreisPlus = 0.05 ' 5 ct
 PreisMinus = 0.008 ' 4/5 ct
 Range("A2").Value = Range("A2").Value + PreisPlus 'Preis 1
 Range("B2").Value = Range("B2").Value - PreisMinus 'Preis 2
 Range("C2").Value = Range("C2").Value - PreisMinus 'Preis 3
 Range("D2").Value = Range("D2").Value - PreisMinus 'Preis 4
 Range("E2").Value = Range("E2").Value - PreisMinus 'Preis 5
End Sub

Für die Buttons zu den anderen 5 Preisen muss du die Formeln entsprechend anpassen

Lösung 2 (aus meiner Sicht die etwas elegantere):

Private Sub CommandButton1\_Click()
'Button für Preis 1
 PreisNr = 1
 PreisPlus = 0.05 ' 5 ct
 PreisMinus = 0.008 ' 4/5 ct
 Zaehler = 0
 For Each Preis In Range("Preise")
 ' Preise ist der Bereich (z.B. A2:E2) in dem die 5 Preise eingetragen sind
 Zaehler = Zaehler + 1
 Select Case Zaehler
 Case Is = PreisNr
 Preis.Value = Preis.Value + PreisPlus
 Case Else
 Preis.Value = Preis.Value - PreisMinus
 End Select
 Next Preis
End Sub

Für die Buttons der anderen 4 Preise muss du nur in der 3. Zeile für die PreisNr die 1 durch 2, 3, 4 bzw. 5 ersetzen.

Gruß
Franz

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Lahela,

habe meinen Lösungsvorschlag 2 nochmals verfeinert.
Die eigentliche Berechnung der jeweils neuen Preise wird jetzt in separaten SUB-Routine durchgeführt. Dadurch wird die Befehlsfolge für die einzelnen Buttons stark verkürzt.

Private Sub CommandButton1\_Click()
'Button für Preis 1
 Preise 1, 0.05, 0.008
End Sub
Private Sub CommandButton2\_Click()
'Button für Preis 2
 Preise 2, 0.05, 0.008
End Sub
Private Sub CommandButton3\_Click()
'Button für Preis 3
 Preise 3, 0.05, 0.008
End Sub
Private Sub CommandButton4\_Click()
'Button für Preis 4
 Preise 4, 0.05, 0.008
End Sub
Private Sub CommandButton5\_Click()
'Button für Preis 5
 Preise 5, 0.05, 0.008
End Sub
Sub Preise(PreisNr As Integer, PreisPlus As Double, PreisMinus As Double)
'Sub-Routine zur Berechnung der neuen Preise
 Zaehler = 0
 For Each Preis In Range("Preise")
 ' Preise ist der Bereich (z.B. A2:E2) in dem die 5 Preise eingetragen sind
 Zaehler = Zaehler + 1
 Select Case Zaehler
 Case Is = PreisNr
 Preis.Value = Preis.Value + PreisPlus
 Case Else
 Preis.Value = Preis.Value - PreisMinus
 End Select
 Next Preis
End Sub

Gruß
Franz

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Danke schön!
Hallo Franz,

vielen Dank für die Lösung, werd ich gleich ausprobieren und dann noch mal berichten :smile:

Noch eine kleine Frage: kann man evtl. auch einen (Zusatz-)Button so programmieren, dass wieder alle Preise wie zu Beginn sind?

Liebe Grüße

Lahela

Hallo Lahela,

die Ausgangswert 1 bis 5 kannst mit folgendem Code wiederherstellen:

Private Sub CommandButton6\_Click()
'Button für Ausgangswerte wieder herstellen
'Preise stehen in den Zellen A2 bis E2
 Range("A2").Value = 1 'Preis 1
 Range("B2").Value = 2 'Preis 2
 Range("C2").Value = 3 'Preis 3
 Range("D2").Value = 4 'Preis 4
 Range("E2").Value = 5 'Preis 5
End Sub

oder

Private Sub CommandButton6\_Click()
'Button für Ausgangswerte wieder herstellen
' Preise ist der Bereich (z.B. A2:E2) in dem die 5 Preise eingetragen sind
 Zaehler = 0
 For Each Preis In Range("Preise")
 Zaehler = Zaehler + 1
 Preis.Value = Zaehler
 Next Preis
End Sub

Viel Erfolg beim Ausprobieren

Franz

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

1 „Gefällt mir“