• 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 in Visual Basic

Status
Niet open voor verdere reacties.

Atwist

Terugkerende gebruiker
Lid geworden
24 jan 2006
Berichten
1.055
Besturingssysteem
Wndows 10
Office versie
2016
Hallo forumleden,

Ik heb hier op het forum een leuke macro gevonden die ik graag wil gebruiken, deze macro begind namelijk in A2 eindigt in D2 maar ik wil dit graag wijzigen in A16 en eindigen in H16.
Dacht dat ik dit wel kon door de cel nummer te wijzigen maar dat werkte niet.
Heeft iemand een tip voor onder staande macro.

Code:
Option Explicit

Private Sub Worksheet_Activate()
    Range("A2").Select
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
    
    Application.ScreenUpdating = False
    Application.EnableEvents = False
        
    If Target.Count > 1 Or Target.Row <> 2 Then GoTo Einde
    If Target.Column = 4 Then
       
        Do While Not IsEmpty(Cells(2, 4))
            Cells(2, 1).EntireRow.Insert
        Loop
    Else
        GoTo Einde
    End If
    Range("A3: D3").Copy
    Range("A2: D2").PasteSpecial Paste:=xlPasteFormats
    Application.CutCopyMode = False
    Range("A2").Select
    
Einde:
Application.EnableEvents = True
Application.ScreenUpdating = True
Exit Sub

End Sub


Met vriendelijke groet,

Atwist
 
Laatst bewerkt door een moderator:
Atwist,

Als je in de Macro Editor zit, laat je de macro lopen met F8 en kun je ziet wat er gebeurd.
Zo kun je het bereik aan passen naar wat jij wil.
 
Deze macro zou ik een heel andere kwalifikatie geven.

Mijn voorkeur:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Count > 1 Or Target.Row <> 2 or target.column<>4 Then Exit Sub    

  Application.EnableEvents = False
  Cells(16, 1).EntireRow.Insert
  Range("A17: H17").Copy  Range("A16: H16")
  Application.EnableEvents = True
End Sub
PS. zowel begint als gebeurt eindigt op een t.
 
Laatst bewerkt:
@Hoornvan,

Met F8 gaat de macro niet lopen wat doen ik verkeerd ik gebruik Excel 2003

@SNB,

Deze macro wil ook niet, ik denk dat ik iets verkeerd doe, maar mijn kennis met VBA is erg gering.

Atwist
 
Je feedback is te a-specifiek om daarop zinvol te kunnen reageren.
 
Sorry SNB,

Maar als ik de macro van u in de knip en plak en ik ga dan de gegevens invoeren in rij 16 en als ik dan bij H16 aankom gebeurt er niets.

Dus vandaar :"Deze macro wil ook niet, ik denk dat ik iets verkeerd doe, maar mijn kennis met VBA is erg gering."

Atwist
 
Je hebt duidelijk de bedoeling van deze macro niet door. Deze werkt enkel als je de waarde van D2 wijzigt nl
Code:
If Target.Count > 1 Or Target.Row <> 2 or target.column<>4 Then Exit Sub
Deze regel wil zeggen dat als je meerdere cellen selecteert, of als je in een andere rij dan rij 2 iets wijzigt, of als je een andere kolom dan kolom 4 iets wijzigt verlaat dan deze macro. Het is dus niet meer dan logisch dat wanneer jij iets wijzigt in rij 16 dat er niets gebeurd
 
Warme bakkertje,

Dat van D2 snap ik, maar als ik de waardes A2 en D2 wijzig in A16 en D16 zou naar mijn mening de macro ipv rij 2 op rij 16 moeten werken of denk ik nu te simpel.

Atwist
 
Warme bakkertje,

Dat van D2 snap ik, maar als ik de waardes A2 en D2 wijzig in A16 en D16 zou naar mijn mening de macro ipv rij 2 op rij 16 moeten werken of denk ik nu te simpel.

Atwist

Dat zou ik niet durven zeggen maar de code werkt pas als D2 wordt gewijzigd.
Je zult dit dus ook aanpassen:

If Target.Count > 1 Or Target.Row <> 16 or target.column<>4 Then Exit Sub

Met vriendelijke groet,


Roncancio
 
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Count > 1 Or Target.Row <> 16 or Target.Column<>8 Then Exit Sub    

  Application.EnableEvents = False
  Cells(16, 1).EntireRow.Insert
  Range("A17: H17").Copy  Range("A16: H16")
  Application.EnableEvents = True
End Sub
 
Roncancio,

Dank voor je antwoord deze was duidelijk, ik heb het nu voor elkaar dat deze op rij 16 werkt.
Alleen wordt de regel niet naar beneden gezet wat deze wel doet als ik deze op rij 2 laat staan.

Wat kan hier de oorzaak van zijn.

Atwist
 
Warme bakkertje,

Ik heb u oplossing geprobeerd na cel 8 wordt de rij gekopieerd naar beneden, maar de rij 16 wordt niet leeg gemaakt en wordt cel 1 niet gekozen.

Atwist
 
Warme bakkertje,

Ik heb u oplossing geprobeerd na cel 8 wordt de rij gekopieerd naar beneden, maar de rij 16 wordt niet leeg gemaakt en wordt cel 1 niet gekozen.

Atwist

Volgens mij was het toch niet de bedoeling dat rij 16 leeg moet omdat daar de gegevens van rij 17 naartoe worden gekopieerd.
Wellicht zie ik het verkeerd.
Als ik het goed begrijp is het de bedoeling dat als cel H16 wijzigt, er een nieuwe rij bij rij 16 wordt tussengevoegd en dat de gegevens van cellen A17 t/m H17 naar A16 t/m H16 wordt gekopieerd.

Met vriendelijke groet,


Roncancio
 
Roncancio,

Als ik de code gebruik die in het begin staat dan wordt er bij het invullen van D2 een lege rij ingevoegd en wordt cel A2 weer geselecteerd.

En dit zou ik dus in rij 16 willen.

Atwist
 
Laatst bewerkt:
Als cel D16 wijzigt, dan wordt er een nieuwe regel tussengevoegd en wordt cel A16 geselecteerd.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count = 1 And Target.Address = "$D$16" Then
        Rows("16:16").Insert
        Range("A16").Select
    End If

End Sub

Met vriendelijke groet,


Roncancio
 
Beste Roncancio ,

Excuus voor de late reactie maar deze

WERKT SUPER:thumb:

Mijn dank is groot.

Atwist
 
Dat kan simpeler:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$D$16" Then
        Rows(16).Insert
        Range("A16").Select
    End If
End Sub
 
Beste Roncancio ,

Excuus voor de late reactie maar deze

WERKT SUPER:thumb:

Mijn dank is groot.

Atwist

Gaarne nog de vraag op opgelost zetten. (rechts onderaan op de pagina).
Bvd.

Met vriendelijke groet,


Roncancio
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan