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

automatisch datum en tijd bij wijziging in tabblad

  • Onderwerp starter Onderwerp starter nieko
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

nieko

Gebruiker
Lid geworden
20 sep 2002
Berichten
114
Beste gebruikers,

Ik heb in VBA een code die zorgt als er gewijzigd word in het bestand dat die de datum en tijd overschrijft. Deze werkt helaas niet als ik meerdere tabbladen heb. Op ieder tabblad staat een registratieformulier, als er in het tabblad wat wijzigt moet die daarop reageren.

De VBA code is:
Private Sub Workbook_BeforeClose(Cancel As Boolean)

If ThisWorkbook.Saved = False Then
Sheets("groep1").Range("q2").Value = Date
Sheets("groep1").Range("s2").Value = Time
ThisWorkbook.Save
End If

End Sub

Private Sub Workbook_Beforesave(Cancel As Boolean)

If ThisWorkbook.Saved = False Then
Sheets("groep1").Range("q2").Value = Date
Sheets("groep1").Range("s2").Value = Time
ThisWorkbook.Save
End If

End Sub

Wie kan me helpen dat deze formule voor ieder tabblad afzonderlijk werkt.

Groeten,
Nieko
 
Worksheet_Change event voor wijzigingen op je Tabbladen, dit per blad opgeven in de code achter je tabblad.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
 
Of eenmalig, met een Workbook_SheetChange event, dat je bij ThisWorkbook in de code zet.
 
Als ik met deze code iets in het 2e tabblad wijzigt, dan past ie de wijzigingsdatum van tabblad 1 ten onrechte aan en van het 2e tabblad laat hij ongewijzigd.

Is er nog een optie?
 
Als ik met deze code iets in het 2e tabblad wijzigt, dan past ie de wijzigingsdatum van tabblad 1 ten onrechte aan en van het 2e tabblad laat hij ongewijzigd.

Is er nog een optie?

Je moet de Sheets("groep1") uit de code verwijderen omdat dat altijd naar de 1e werkblad verwijst.

Met vriendelijke groet,


Roncancio
 
Roncancio,

Boe, hoe, hoe,

Het lukt met nog steeds niet. Ik heb nauwelijks kennis van VBA.

Zou je de code voor mij bij elkaar willen zetten zodat ik deze kan plakken in VBA.

Please
 
Nieko, Zet dit blokje in de ThisWorkbook module van je bestand...
Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

    Application.EnableEvents = False
    
    Sh.Range("q2").Value = Date
    Sh.Range("s2").Value = Time

    Application.EnableEvents = True

End Sub

Groet, Leo
 
Ja, het werkt!!

Alleen, klopt het dat je hiermee wel niets meer ongedaan kunt maken?
 
Nieko zei:
Alleen, klopt het dat je hiermee wel niets meer ongedaan kunt maken?
Yep! Een van de nadelen van het gebruik van het Change-event is dat je moet voorkomen dat de code zichzelf blijft aanroepen. Zoals het nu in elkaar zit, kan je alleen de 1e bewerking niet ongedaan maken. Je moet daarvoor wel een cel reserveren waar de waarde TRUE of FALSE in weg kan worden geschreven. In het onderstaande voorbeeld heb ik voor cel A1 gekozen, maar die kan je zelf uiteraard aanpassen in de door jou gewenste...

Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)

    If Me.Saved = False Then Me.Save

End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim sh As Object
    
    For Each sh In Me.Sheets
        sh.Range("A1").Value = False
    Next sh

End Sub

Private Sub Workbook_SheetChange(ByVal sh As Object, ByVal Target As Range)

    If Target.Address(False, False) = "A1" Then Exit Sub
    If sh.Range("A1").Value = True Then Exit Sub
    
    Application.EnableEvents = False
    
    sh.Range("q2").Value = Date
    sh.Range("s2").Value = Time
    sh.Range("A1").Value = True

    Application.EnableEvents = True

End Sub

Groet, Leo
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan