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

Fout 13 vanuit VBA in excel

Status
Niet open voor verdere reacties.

CeesNaar

Nieuwe gebruiker
Lid geworden
28 apr 2019
Berichten
3
Beste mensen, ik hoop dat iemand mij kan helpen, ik kom er (na uren zoeken) niet uit.

Onderstaande VBA script werkt, als Programmacode op zich goed. Het is de bedoeling dat als er in kolom K het woord Ja wordt getypt, dat in kolom M de datum wordt geplaatst. Maar zodra er een nieuwe regel wordt aangemaakt, krijg ik een fout 13.


Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("K:K")) Is Nothing Then
If Target.Value = "Ja" Then Target.Offset(0, 2) = Date

End Sub


Welke Excel/VBA wizzard kan mij helpen?
Grt, Cees

p.s. ik werk in Office 365, op een nieuw, moderne Windows10 laptop
 
Laatst bewerkt:
Je mist in ieder geval een End If.
Maar dat staat los van fout 13.

Maak er eens dit van:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 11 And LCase(Target.Value) = "ja" Then Target.Offset(0, 2) = Date
End Sub

Fout 13 is een datatype probleem.
Maar waar, dat kan ik zo niet zeggen.
 
Laatst bewerkt:
Hi Edmoor,

Fijn zo'n snelle reactie, super!
Dat de end if er niet stond was een foutje bij het kopieeren, in mijn code staat het er wel. Maar ik heb de regel zoals jij aangaf er in gezet, deze werkt ook, maar geeft ook de fout 13 bij het invoegen van een extra regel helaas.
 
Plaats dan je document want dan zit het probleem daar in, niet in de code.
 
Of je kan het opvangen door minstens 2 kolommen te selecteren en een rij in te voegen met volgende code
 

Bijlagen

Ik heb hem zelf al gevonden, ik moest erbij vermelden wat er gedaan moest worden als de cel leeg is (als er dus een nieuwe regel aangemaakt werd). Zoals hieronder gaat het goed:


Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column <> 11 Then Exit Sub
With Target
If Target.Value = "Ja" Then Target.Offset(0, 2) = Date

End With
End Sub

Dank voor jullie hulp!
 
Ok dan.
Die With en End With regels in de code die je toont zijn overigens overbodig.

Doe het eens zo:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    Application.ScreenUpdating = False
    If Target.Column = 11 And LCase(Target.Value) = "ja" Then Target.Offset(0, 2) = Date
    Application.ScreenUpdating = True
End Sub
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan