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

Opgelost VBA code werkt niet meer

Dit topic is als opgelost gemarkeerd

BOUKES

Gebruiker
Lid geworden
15 jun 2016
Berichten
178
DE vba code heeft lang gewerkt maar nu niet meer. Wat is de oplossing?

als de EAN code wordt gescand zou automatisch de datum in kolom A moeten verschijnen.
Formule met VANDAAG kan uiteraard niet omdat dat elke dag verandert


Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    If Target.Count = 1 Then '<- dit dus
        Select Case Sh.Name
            Case "Inkoop", "Verkoop"
                If Target.Column = 5 Then
                    Application.EnableEvents = False
                    Cells(Target.Row, 1) = IIf(Target <> "", Date, "")
                    Application.EnableEvents = True
                End If
            End Select
        End If
End Sub
 

Bijlagen

Wellicht handig er bij te vertellen wat er dan niet goed is.
De code loopt hier zonder enige melding.
De datum van vandaag verschijnt keurig in kolom A.
 
De datum verschijnt niet bij mij, ook geen foutmelding.
IK heb dit gemaakt voor een familielid die werkt in office 2016. Ik heb t thuis gemaakt in de 365 versie.
Kan het daar in zitten?
 
Dat lijkt mij niet.
De code ziet er keurig uit.
Loop deze eens door in debug mode en controleer daarin de waarde van de verschillende variabelen.
 
Ik heb er dit van gemaakt:

Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Select Case Sh.Name & Target.Column & Target.Count & Target
    Case "Inkoop51", "Verkoop51"
        Cells(Target.Row, 1) = Date
    End Select
End Sub

Het probleem is dat bij die ander application.enableevents=false staat ingeschakeld.
Met de bovenstaande code heb je die instelling helemaal niet nodig.
 
Dat lijkt me duidelijk:
Code:
Sh.Name & Target.Column & Target.Count & Target
 
Ben geen deskundige vba specialist, maar het proberen waard.


Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    ' Controleer of er slechts één cel is gewijzigd (scanners vullen meestal 1 cel)
    If Target.CountLarge = 1 Then
        
        Select Case Sh.Name
            Case "Inkoop", "Verkoop"
                ' Controleer of de wijziging in kolom E (kolom 5) plaatsvond
                If Target.Column = 5 Then
                    Application.EnableEvents = False
                    
                    ' Gebruik Sh.Cells om zeker te weten dat je in de juiste sheet schrijft
                    If Target.Value <> "" Then
                        Sh.Cells(Target.Row, 1).Value = Date
                    Else
                        Sh.Cells(Target.Row, 1).ClearContents
                    End If
                    
                    Application.EnableEvents = True
                End If
        End Select
        
    End If
End Sub
 
Draai eerst deze macro

Code:
Sub M_snb_000()
  application.enableevents=true
End Sub[code]
 
snb zei het al. Application.EnableEvents staat bij TS op False.
Tik dus eenmalig dit in het Direct venster:
Code:
Application.EnableEvents = True

Edit:
Of #9
 
@jverkerk
Ik denk niet dat het nodig is de resultaten van jouw AI-zoektocht te plaatsen. Je kunt volstaan met de TS erop te wijzen hoe hij/zij dat zelf met welk zoektermen kan doen. Er is natuurlijk een reden waarom TS hiervoor liever dit forum gebruikt.
 
@snb
Ik zou niet weten waarom niet, hij hoeft het toch niet te proberen, en iedereen die AI gebruikt zal het misschien weer anders doen. Je kunt hem er zelf ook op wijzen. De resultaten van uw hand zijn soms ook onduidelijk of werken ook niet goed. We blijven tenslotte mensen en die maken fouten.
Fijne dag verder.
 
Dus t gaat om deze?
Die moet op True staan.

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Target.Count = 1 Then '<- dit dus
Select Case Sh.Name
Case "Inkoop", "Verkoop"
If Target.Column = 5 Then
Application.EnableEvents = False
Cells(Target.Row, 1) = IIf(Target <> "", Date, "")
Application.EnableEvents = True
End If
End Select
End If
End Sub

Stomme vraag waarschijnlijk maar wat of wie is TS?
 
Als de code fout loopt terwijl Application.EnableEvents op False is gezet blijft deze op False staan en worden events niet meer uitgevoerd. Die moet je dan handmatig weer op True zetten. Het is een Application instelling en geldt dus voor Excel, niet voor het specifieke document. Zie #9 en #10.

TS = Topic Starter.
Jij dus in dit geval :)
 
Laatst bewerkt:
Terug
Bovenaan Onderaan