• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

VBA - vaste markup met formule berekenen

Status
Niet open voor verdere reacties.

dewes86

Gebruiker
Lid geworden
15 nov 2010
Berichten
33
Goedemorgen,

Ik wil het volgende kunnen bereiken middels een VBA formule:

- In een cel wil ik een waarde in kunnen vullen
- Middels een VBA button wil ik een formule activeren die wordt toegepast op een gedefinieerde range. De formule is (inkoopprijs+ingevulde waarde in de cel)*1,21)
- In sommige gevallen is er geen inkoopprijs ingevuld en/of bekend. In dat geval wil ik de cel blanco houden zonder foutmelding of iets dergelijks

Ik heb een voorbeeld Excel toegevoegd ter verduidelijking van het idee.

Is er iemand die mij zou kunnen helpen?

Bedankt alvast!
 

Bijlagen

Dat kan toch gewoon met een simpele Excel formule?
PHP:
=ALS.FOUT((B8+$D$3)*1,21;"")
 
Laatst bewerkt:
Hi Ed,

Ongelofelijk hoe snel jij elke keer bent met reageren! Met de desbetreffende formule loop ik aan tegen het feit dat er naderhand handmatig nog cellen worden aangepast/ingevuld waardoor de formules overschreven worden. Dit is de reden dat een VBA uitkomst kan bieden.

Is daar een manier voor?

Alvast bedankt!
 
Zet dan dit achter het blad in plaats van een knop:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 5 And Target.Row > 7 And Target.Count = 1 Then
        Application.EnableEvents = False
        Range("E8").FormulaLocal = "=ALS.FOUT((B8+$D$3)*1,21;"""")"
        Range("E8").AutoFill Destination:=Range("E8:E" & Range("C8").CurrentRegion.Rows.Count + 6)
        Application.EnableEvents = True
    End If
End Sub

Dan wordt bij een al dan niet onbedoelde wijziging in kolom E altijd de formule terug gezet.
 
Laatst bewerkt:
Zet dan dit achter het blad in plaats van een knop:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 5 And Target.Row > 7 And Target.Count = 1 Then
        Application.EnableEvents = False
        Range("E8").FormulaLocal = "=ALS.FOUT((B8+$D$3)*1,21;"""")"
        Range("E8").AutoFill Destination:=Range("E8:E" & Range("C8").CurrentRegion.Rows.Count + 6)
        Application.EnableEvents = True
    End If
End Sub

Dan wordt bij een al dan niet onbedoelde wijziging in kolom E altijd de formule terug gezet.

De formule werkt top! Het enige waar ik nu nog tegenaan loop is dat de verkoopprijs in deze overschreven mag worden door de gebruiker. Het geldt eigenlijk als een soort automatisch gegeneerd advies die ze eventueel zelfstandig kunnen afronden, verhogen en/of verlagen. In deze vorm is het bindend (wat overigens dan wel weer super bruikbaar is voor andere delen van het document). Daarnaast geeft de cel ook resultaat als de mark-up (D3) niet is ingevuld. In dat geval zou het dan blanco moeten blijven. Is het dan toch beter om met een button te werken?

Bedankt weer voor je hulp!
 
Als de verkoopprijs overschreven mag worden heeft het uiteraard totaal geen zin.
Gebruik dan een extra kolom waarin de gebruiker een plus of min bedrag kan zetten die je dan in de formule mee neemt.

Als hij niets moet doen als D3 leeg is kan je dat als extra controle in de formule zetten:
Code:
Range("E8").FormulaLocal = "=ALS($D$3<>0;ALS.FOUT((B8+$D$3)*1,21;"""");"""")"
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan