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

VBA werkt niet

Status
Niet open voor verdere reacties.

heiko50

Gebruiker
Lid geworden
22 feb 2025
Berichten
25
Ik heb een VBA gekopieerd en geplakt, maar hij werkt niet. Zit er een fout in of doe ik iets verkeerd?
Het is dus de bedoeling om in cel A1 gegevens in te voeren die gekopieerd worden naar kolom B

Code:
Private Sub Worksheet_Change(ByVal Target As Range)

    If Not Intersect(Target, Me.Range("A1")) Is Nothing Then

        Application.EnableEvents = False

        Dim laatsteRij As Long

        laatsteRij = Me.Cells(Rows.Count, 2).End(xlUp).Row + 1 ' Bepaalt de eerste lege rij in kolom B

        Me.Cells(laatsteRij, 2).Value = Me.Range("A1").Value ' Kopieert de waarde naar kolom B

        Me.Range("A1").ClearContents ' Leegt cel A1

        Application.EnableEvents = True

    End If

End Sub
 
Laatst bewerkt door een moderator:
Werkt bij mij prima. Heb je de macro in de module van een werkblad geplaatst?
Zet eens een breakpoint in het begin van de macro en volg wat er gebeurt.
Zie bijlage.
 

Bijlagen

Mod edit: Bij deze
 

Bijlagen

Laatst bewerkt door een moderator:
@ emields: Wanneer ga jij eens leren om dit soort reacties achterwege te laten. Je kan gewoon op "rapporteer" klikken en wij doen de rest. Kortom, je reactie verwijderd en bijlage laten staan. Het gaat tenslotte om de vragensteller.
 
Ik zal er in het vervolg rekening mee houden en de vragen zonder voorbeeldbestand negeren.
 
Lees nou even wat ik schrijf.
"Je kan gewoon op "rapporteer" klikken en wij doen de rest."
 
@heiko50:
Dit lijkt me voldoende. Wel achter het werkblad plaatsen, niet in een Module:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address(0, 0) = "A1" Then
        Application.EnableEvents = False
        Cells(Rows.Count, 2).End(3)(2) = Target
        Range("A1").ClearContents
        Application.EnableEvents = True
        Application.Goto Range("A1")
    End If
End Sub
 
Laatst bewerkt:
Ik zou het zo schrijven.
Code:
Cells(Rows.Count, 2).End(xlUp).offset(1) = target
of beter te begrijpen.
Code:
Cells(Rows.Count, "B").End(xlup).offset(1) = target
of voor vergevorderden.
Code:
Cells(Rows.Count, 2).End(3) (2)= target
 
Prima uiteraard.
Aangepast in #7 :)
 
Ed en HSV, hartelijk dank, het werkt!
PS Groningse humor is top. Hoe vind je deze:
"As je oet Grunning kom'n kin je 't wel schud'n
PS Ik bin der zulf ook aine...
 
  • Haha
Waarderingen: HSV
Toch nog even een vraagje:

Als ik dit doe komen de getallen ook in rij B i.p.v rij D:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) = "A1" Then
Application.EnableEvents = False
Cells(Rows.Count, 2).End(3)(2) = Target
Range("A1").ClearContents
Application.EnableEvents = True
Application.Goto Range("A1")
End If
If Target.Address(0, 0) = "C1" Then
Application.EnableEvents = False
Cells(Rows.Count, 2).End(3)(2) = Target
Range("C1").ClearContents
Application.EnableEvents = True
Application.Goto Range("C1")
End If
End Sub

Wat moet ik veranderen?
 
Laatst bewerkt door een moderator:
Dan zo:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    Select Case Target.Address(0, 0)
        Case "A1", "C1"
            Application.EnableEvents = False
            Cells(Rows.Count, Target.Column + 1).End(3)(2) = Target
            Target.ClearContents
            Application.EnableEvents = True
            Application.Goto Range(Target.Address)
    End Select
End Sub
NB:
Gebruik codetags bij het plaatsen van code.
Zie de link in mijn handtekening.
 
Laatst bewerkt:
Kwartje wil niet helemaal vallen.
Welke regel en / of getal bepaald waar de ingevoerde waarden neergezet worden?
 
Deze:
Code:
Cells(Rows.Count, Target.Column + 1).End(3)(2) = Target
 
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    Select Case Target.Address(0, 0)
        Case "A1", "C1", "E1",
            Application.EnableEvents = False
            Cells(Rows.Count, Target.Column + 1).End(3)(2) = Target
            Target.ClearContents
            Application.EnableEvents = True
            Application.Goto Range(Target.Address)
    End Select
End Sub
Een cel met dezelfde functie er tussen plakken gaat dus niet?
 
Als je die komma achter de Case regel weghaalt werkt dat prima.
 
Toch nog heel even: Hoe kan ik met cel A1 vier kolommen vullen in de volgorde:
B1, C1, D1 E1, B2, C2, enz?
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address(0, 0) = "A1" Then
        Application.EnableEvents = False
        Cells(Rows.Count, 2).End(3)(2) = Target
        Range("A1").ClearContents
        Application.EnableEvents = True
        Application.Goto Range("A1")
    End If
End Sub
 
Is al voldoende
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
   If Target = cells(1) Then   Cells(Rows.Count, 2).End(3)(2).resize(,4) = Target
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan