• 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.

Ingevulde waarde automatisch berekenen in dezelfde cel

Status
Niet open voor verdere reacties.

Teebee

Gebruiker
Lid geworden
8 jan 2006
Berichten
157
Hallo,

is het mogelijk om automatisch een ingevulde waarde in bv. cel A10 te laten berekenen met een formule en het resultaat in A10 te zetten?

Voorbeeld:

Ik enter 11 in cel A10, dat deze dan berekent wordt aan de hand van bv. deze formule: (A10*360)/100, en dat dan in cel A10: 39,6 komt te staan?

en ik zou dit zo voor verscheidene cellen willen uitvoeren.
 
Dat kan in de Worksheet sectie met Sub Worksheet_Change.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$10" Then
        Application.EnableEvents = False
        Target.Value = Target.Value * 360 / 100
        Application.EnableEvents = True
    End If
End Sub
 
Laatst bewerkt:
Waarom niet vermenigvuldigen met 3,6 ?

Waarom geen berekening in een aparte cel ?
 
@snb, omdat er meerdere formules zijn, met andere berekeningen.


@edmoor
bedankt, het werkt voor een groot gedeelte totdat je de cel leegmaakt, dan geeft hij een error.
Is dit ook gemakkelijk aan te passen om ook een volledige rij met dezelfde formule te berekenen?
 
Als je de cel leeg maakt komt er bij mij 0 te staan. Als je zegt een foutmelding te krijgen vertel er dan bij wat de foutmelding is.
Een hele rij berekenen kan ook, maar dat heeft uiteraard alleen zin als de waarden in die hele rij afhankelijk zijn van de waarde in A10.
Plaats een voorbeeld documentje.
 
Laatst bewerkt:
Dat is een document zonder macro's en kan ik dus niet in zien wat je hebt gedaan. Geef een vooreeld met de macro's en ingevulde waarden.
Zorg er ook voor dat macro's uitgevoerd mogen worden. Dat doe in je in de opties voor het vertrouwenscentrum:
VC.jpg
 
Je wijst in het document naar kolom L om getallen in te vullen, dan moet je uiteraard de code daar ook op aanpassen.
Zoals hij nu is werkt hij alleen voor cel A10 en daar doet hij prima en zonder foutmelding.

Voor je voorbeeld zou het dit moeten zijn:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("L9:L13")) Is Nothing Then
        Application.EnableEvents = False
        Select Case Target.Address
            Case "$L$9": Target.Value = (Target.Value * 60) / 1000
            Case "$L$10": Target.Value = (Target.Value * 60) / 1000
            Case "$L$11": Target.Value = Target.Value / 5
            Case "$L$13": Target.Value = (1 - (Target.Value / 3000)) * 100
        End Select
        Application.EnableEvents = True
    End If
End Sub

Je voorbeeld zegt overigens nog niets over het gebruiken van een hele rij.
 
Ik maakte eigenlijk de verwijzing naar een hele rij/range, bv. C13 t/m L13 moet dit uitvoeren: <== Hier geef je een getal in (in deze rij), en de formule is: (1 - (getal / 3000))*100
 
Dan zou je aan de Sub in #9 voldoende moeten hebben om deze daar op aan te passen.
 
Is er een kortere methode dan gewoon alles in de case toe te voegen?

Nu heb ik Case "$C$9", "$D$9", "$E$9", "$F$9", "$G$9", "$H$9", "$I$9", "$J$9", "$K$9", "$L$l9": Target.Value = (Target.Value * 60) / 1000
 
Toch maar even een extra voorbeeldje voor je gemaakt:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("C9:L13")) Is Nothing And Target.Count = 1 Then
        Application.EnableEvents = False
        Select Case Target.Column
            Case 3 To 12                [COLOR="#008000"]'Kolommen C t/m L[/COLOR]
                Select Case Target.Row  [COLOR="#008000"]'Rijen 9, 10, 11 en 13[/COLOR]
                    Case 9, 10: Target.Value = (Target.Value * 60) / 1000
                    Case 11:    Target.Value = Target.Value / 5
                    Case 13:    Target.Value = (1 - (Target.Value / 3000)) * 100
                End Select
        End Select
        Application.EnableEvents = True
    End If
End Sub

Dan zie je ineens waarom een goed voorbeeld en dito uitleg van belang is.
 
Laatst bewerkt:
Bedankt voor al je hulp, edmoor !!

Hiermee kan ik zeker verder, en ga proberen om de rest ook aan het werk te krijgen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan