Macro uitvoeren indien cel wijzigt: werkt niet

Status
Niet open voor verdere reacties.

Carline

Nieuwe gebruiker
Lid geworden
15 okt 2017
Berichten
3
Hallo,

Ik heb een Excel-file met veel formules, werkbladen en macro's. Op één van die tabbladen heb ik een cel G9 waarin een analysenummer staat. Op cel F23 staat de prijs van de analyse. Deze cel bevat geen formules, zodat we in uitzonderlijke omstandigheden de prijs manueel kunnen intikken. In cel I23 (buiten het afdrukbereik) staat de berekende standaard prijs (berekend via formule).

Nu is de bedoeling, als je een nieuw analysenummer kiest (dus cel G9 wijzigt), dat hij in cel F23 standaard de prijs overneemt van cel I23, zodat onze manuele wijzigingen dan ongedaan worden. Ik gebruik onderstaande code, maar dit werkt echter niet zodra er formules e.d. automatisch berekend worden. Blijkbaar moet je automatische herrekeningen uitschakelen, maar ik weet niet hoe ik dit moet doen, zeker aangezien hij cel I23 wel moet uitrekenen. Kan iemand mij helpen?


Private Sub Worksheet_Change(ByVal Target As Range)


If Target.Address = "$G$9" Then

Range("F23").Value = Range("I23").Value

End If


End Sub
 
plaats eens een bestand, want als ik jouw situatie naboots, gaat het zover ik kan testen goed.
 
Om het automatisch berekenen uit en aan te zetten gebruik je

Code:
Application.Calculation = xlManual
Application.Calculation = xlAutomatic

Bedoel je dat je de formule weer wilt terugzetten?
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Address = "$G$9" Then Range("F23").Formula = Range("I23").Formula
End Sub
 
@VenA, nee, hoeft niet noodzakelijk de formule over te nemen, de waarde is ook goed.

Die Application.Calculation heb ik ook al tevergeefs geprobeerd, tenzij ik het op de verkeerde plaats in de code gezet heb.

@SjonR, in een hulpbestandje deed ie het inderdaad wel, snap ook niet waarom ie het dan in het "echte" bestand niet doet. Kan dit echter niet online zetten, is nogal een groot bestand, en is van mijn werk, kan ik niet doen zonder akkoord van mijn werkgever.
 
Over welk hulpbestandje heb je het? Het communiceren via directe lijnen mag blijkbaar maar komt dit forum en de oplossing niet ten goede.
 
Bedankt iedereen om mee te denken! Heb intussen wat verder gegoogled en onderstaande code gevonden en toegepast. Deze werkt wel!


Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range

' The variable KeyCells contains the cells that will
' cause an alert when they are changed.
Set KeyCells = Range("G9")

If Not Application.Intersect(KeyCells, Range(Target.Address)) _
Is Nothing Then

' Display a message when one of the designated cells has been
' changed.
' Place your code here.
Cells(66, 10).Value = Cells(66, 13).Value

End If
End Sub
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan