Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

Excel VBA vaste rij kopieren naar geselecteerde rij

Pagina: 1
Acties:

  • Nick v D
  • Registratie: Mei 2013
  • Laatst online: 18:06
Hallo Mannen,

Ik probeer in een excel een statische rij te kopiëren naar een geselecteerde rij.

Ik heb dit scriptje gevonden die ervoor zorgt dat de rij die ik wil kopiëren daadwerkelijk kopieert naar de eerste lege rij.
Sub NieuweRegel()
'
' Macro1 Macro
'

'
Range("C16:Q16").Select
Selection.Copy
Sheets("Blad1").Select
Range("C65535").End(xlUp).Offset(1, 0).Select
ActiveSheet.Paste
Application.CutCopyMode = False
End Sub
Maar ik wil soms enkele rijen overslaan.
Dus moet dit scriptje de statische rij plakken in de rij die ik geselecteerd heb.

Ik vermoed dat ik iets in dit stukje aan moet passen:
Range("C65535").End(xlUp).Offset(1, 0).Select

  • Paultje3181
  • Registratie: November 2002
  • Laatst online: 19:06
Wat hij hier doet is bij een xls-bestand (maximum aantal regels 65535) omhoogkijken of er iets leeg is. Dit werkt dus niet bij bestanden > 65535 regels. Daarnaast selecteert hij een gedeelte van een rij nl C tm Q en moet de grootte dus hetzelfde zijn.
Probeer dit eens:
Visual Basic:
1
2
3
4
5
    Selection.Copy
    Dim LastRow As Long
    LastRow = ActiveSheet.UsedRange.Rows.Count
    Rows(LastRow + 1).Select
    ActiveSheet.Paste

Hiermee selecteer je eerst de rij dit je wil en dan voer je de macro uit. Ik heb nu een variabele LastRow en ik doe +1 om de volgende rij te plakken. 1 regel overslaan = +2 etc.

Maar het kan ook zijn dat ik je vraag niet begrijp ;)

[ Voor 13% gewijzigd door Paultje3181 op 16-06-2014 14:18 ]


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Lees je eigen code eens:

Visual Basic:
1
2
3
4
5
6
7
8
9
Sub NieuweRegel()

Range("C16:Q16").Select 'hier gaat het al mis. Je selecteert een bereik, dus je huidige selectie is foetsie
Selection.Copy 'ook een range heeft de methode copy
Sheets("Blad1").Select 'en dit is helemaal overbodig...
Range("C65535").End(xlUp).Offset(1, 0).Select 
ActiveSheet.Paste
Application.CutCopyMode = False
End Sub


Zoek eens in de help op de copy methode van het rangeobject dan zul je zien dat het allemaal simpeler kan:

Visual Basic:
1
range("A1:Z1").copy Selection

[ Voor 7% gewijzigd door Lustucru op 17-06-2014 01:18 ]

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland