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

Wijziging weergegeven ondanks formule in cel

Status
Niet open voor verdere reacties.

Siep26

Gebruiker
Lid geworden
15 sep 2017
Berichten
71
In bijgaand bestand en onderstaande formule zien jullie een VBA-formule waarmee ik de wijzigingen in kolom A wil weergegeven door een tijdstip dat veranderd. Echter zodra in een cel in kolom A een formule staat monitort de VBA geen wijzigingen. Zo kan ik de cel E1 (de formule in cel A1 is =E1) oneindig aanpassen. Hij ziet niet dat A1 wordt gewijzigd, de formule blijft hetzelfde alleen de uitkomst is anders. Als ik in A2 een andere waarde zet ziet hij dit wel als een wijziging.

Kan dit ondervangen worden?
Code:
Private Sub Worksheet_Change(ByVal Target As Range)

With Target
    If .Column <> 1 Then Exit Sub
    Application.EnableEvents = False
    If .Count = 1 Then .Offset(, 1) = Now
    Application.EnableEvents = True
End With

End Sub
 

Bijlagen

  • wijzigingtest.xlsm
    15,9 KB · Weergaven: 30
Ik weet niet of het werkt maar je gebruikt nu,
Private Sub Worksheet_Change en als je van Change nu eens Calculate maakt.
 
Dan krijg ik de melding

Complieerfout:
Proceduredeclaratie komt niet overeen met de beschrijving van de gebeurtenis of de procedure met dezelfde naam
 
Ik heb het volgende gevonden maar weet niet of dit de oplossing is.

Heb je automatisch berekenen aanstaan? (Onder Extra, optie, berekenen.)
Zo ja, dan wordt de sheet automatisch doorgerekend bij een wijziging.

Anders kan het voor zover ik weet alleen via vba.
Open de vba-editor en dubbelklik op ThisWorkbook

Plak daar onderstaande code.

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Excel.Range)
Calculate
End Sub

Als je nu ergens met de muis klik of iets invoert wordt er doorgerekend.
Probeer maar uit door in een cel =nu() te zetten en deze cel op te maken als tijd met secondes. Telkens als je met de muis klikt wordt de tijd bijgewerkt.
 
Wat wil je bereiken dan? Om de som in E1 te krijgen

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Column = 1 And Target.Count = 1 Then
    Application.EnableEvents = False
    Target.Offset(, 1) = Now
    Range("E1") = Application.Sum(Columns(1))
    Application.EnableEvents = True
  End If
End Sub
 
bedoel je dit?
 

Bijlagen

  • wijzigingtest (1).xlsm
    16 KB · Weergaven: 33
Zonder formules in kolom A
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Column = 5 And Target.Count = 1 Then Target.Offset(, -4).Resize(, 2) = Array(Target.Value, Now)
End Sub
 
Waarschijnlijk werkt uw oorspronkelijk bestand dan met andere kolommen.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan