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

macrobutton rij invoegen op selectie

Status
Niet open voor verdere reacties.

sis123

Gebruiker
Lid geworden
17 feb 2005
Berichten
284
Selection.Copy
Rows("26:26").Select
Selection.Insert Shift:=xlDown

Hierboven een simpele macro die een rij met formules copieerd en altijd op rij 26 invoegd.

Het zou als volgt moeten werken :

de gebruiker selecteert eerst de rij waar de formule moet ingevoegd worden, dan op de button om de rij met formules in te lassen

is dit moegelijk ?
 
Sis,

Je maakt 2 knoppen aan .

1ste knop Rij toeveoen
2 de knop rij verwijderen

Je vult onderstaande codes in . Je selecteert de cel waar je moet invoegen of verwijderen en je klikt op de desbetreffende knop.

Code:
Sub RijToevoegen()
    Dim Response
    Response = MsgBox("Een nieuwe rij wordt ingevoegd op de plaats van de active cel. Doorgaan ?", vbYesNo, "Rij invoegen ?")
    If Response = vbNo Then
        GoTo einde
    End If
    
    Dim nrow As Integer
    nrow = ActiveCell.Row
    
    ActiveCell.EntireRow.Insert
    
    ActiveCell.Offset(-1, 0).EntireRow.Copy
    ActiveCell.EntireRow.Select
    ActiveSheet.Paste
    Application.CutCopyMode = False

    Range(Cells(nrow, 2), Cells(nrow, 3)).ClearContents
    Range(Cells(nrow, 4), Cells(nrow, 5)).ClearContents
    Range(Cells(nrow, 6), Cells(nrow, 7)).ClearContents
    Cells(nrow, 10).ClearContents
    Cells(nrow, 12).ClearContents
    
    Cells(ActiveCell.Row, 2).Select
    
einde:
End Sub


Sub RijVerwijderen()
    Dim Response
    Response = MsgBox("De rij van de active cel wordt verwijdered. Doorgaan ?", vbYesNo, "Rij verwijderen ?")
    If Response = vbYes Then
        ActiveCell.EntireRow.Delete
    End If

End Sub



groet

grema
 
ok, er wordt nu wel op de actieve rij een nieuwe rij toegevoegd
maar de ingevoegde rij moet de formules bevatten van een vooraf gecopieerde rij
 
Dan dit stukje weglaten:
Code:
    Range(Cells(nrow, 2), Cells(nrow, 3)).ClearContents
    Range(Cells(nrow, 4), Cells(nrow, 5)).ClearContents
    Range(Cells(nrow, 6), Cells(nrow, 7)).ClearContents
    Cells(nrow, 10).ClearContents
    Cells(nrow, 12).ClearContents
 
de rij die wordt gekopieerd is rij 1 (dus met formules)

deze gekopieerde rij moet dan ingevoegd op de geselecteerde rij
 

Bijlagen

Laatst bewerkt:
de rij die wordt gekopieerd is rij 1 (dus met formules)

deze gekopieerde rij moet dan ingevoegd op de geselecteerde rij

Bedoel je dit?
Code:
    Selection.Insert xlShiftDown
    Sheets("blad1").Rows("1:1").Copy Selection
 
Ik merk dat dit gedrag ook optreedt als je handmatig een rij 'tussen voegt': de formules van de onderstaande rijen wordt niet aangepast. Lijkt me haast een bug, maar ik zal eens kijken of er een oplossing voor is.

Wat wel help is om via een macro een AutoFill uit te voeren voor de onderliggende rijen. Dan worden de formules meteen goed aangepast.
 
Nou, nou, wat een gepuzzel... :D Maar volgens mij is het me gelukt!

Code:
    Dim SourceRange As Range
    Dim FillRange As Range
    
    'Gebruik de rij boven de in te voegen rij als 'bron' range
    Set SourceRange = ActiveCell.EntireRow.Offset(-1, 0)
    
    'Voeg op de huidige plaats een hele rij in (en niet alleen een cel)
    ActiveCell.EntireRow.Insert (xlShiftDown)
    
    'Bepaal van welk deel van de tabel je de formules wilt updaten
    'Dit is in principe alles wat onder de 'bron' range zit
    Set FillRange = Range(SourceRange, SourceRange.End(xlDown).End(xlDown))
    
    'Update alle formules
    SourceRange.AutoFill FillRange, xlFillDefault

Voordeel van deze code is ook dat een gebruiker niet persé de hele cell hoeft te selecteren; dat wordt voor hem/haar gedaan via ".EntireRow'

Succes! :thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan