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

lege cel onderaan groeiende lijst selecteren dmv macro

Status
Niet open voor verdere reacties.

rEdrAT

Gebruiker
Lid geworden
21 jul 2009
Berichten
8
Ik ben bezig met een macro in Excel 2007, maar ik loop vast (ik ben net bezig mij te verdienen in de wereld van de marco's).
Mijn opzet is klantgegevens van het ene werkblad naar een ander werkblad te kopiëren dat dient als verzamellijst van de klantgegevens. Deze lijst groeit dus iedere keer als de macro wordt uitgevoerd. Daarvoor moet de macro iedere keer de onderste lege cel onder aan de lijst selecteren die dus opschuift naar beneden omdat de lijst groeit.
Dit is de macro de macro die ik met 'opnemen' heb gemaakt:

Sub Klantgegevensverzamelen()

'

' Klantgegevensverzamelen Macro

' Klantgegevens verzamelen in het opdrachtformulier

'

' Sneltoets: CTRL+k

'

Range("A3:H3").Select

Selection.Copy

Workbooks.Open Filename:= _

"C:\Documents and Settings\Novo\Bureaublad\Opdrachtformulier\Originelen\opdrachtformulier.xls"

Selection.End(xlDown).Select

Range("A3").Select

ActiveSheet.Paste

Selection.End(xlUp).Select

Application.CutCopyMode = False

ActiveWorkbook.Save

ActiveWindow.Close

End Sub

Het commando Selection.End(xlDown).Select is het resultaat van [Ctrl] + [↓] (pijltje naar beneden) met als doel de laatst gevúlde cel van een kolom (lijst) te selecteren. Tot zover prima.

Het commando Range("A3").Select is het resultaat van [↓] waarmee ik als doel heb de lege cel (die iedere keer als de macro wordt uitgevoerd 1 rij naar beneden verhuisd) direct onderaan de lijst (die dus langer wordt na ieder macro) te selecteren. Echter dat vult de macro bij het opnemen ervan in als een afgebakende cel (“A3”), waardoor nieuwe gegevens telkens in dezelfde cel worden geplakt en de lijst dus niet groeit.

Weet iemand wat hiervoor het juiste commando is?
Of is er een zijn er meer wegen die naar Rome lijden voor mijn opzet.

Alvast vriendelijk bedankt.
 
Ik gebruik iets dergelijks.
Als er in kolom H (plus cel-nummer) geen naam staat (dus niets ingevuld op die regel),
dan in kolom E (plus cel-nummer)het eerst volgende klantnummer invullen.
Die wordt gegenereerd met YYMM (jaar jaar, maand maand) en een volgnummer.
De cursor wordt dan in de lege cel ernaast geplaatst. (werkt lekker vlot)

Zet dit eventueel in een test-document en plaats die in een bijlage in je reaktie als het je niet lukt.


Succes.

Code:
Private Sub Workbook_Open()
  Dim kn As Integer
  
  kn = 2
  With ActiveWorkbook.Sheets("KlantenRECR")
    Do
      kn = kn + 1
      If IsEmpty(.Range("H" & kn)) Then .Range("E" & kn) = "REC" & Format(Date, "yymm") & Format(kn - 3, "000"): .Range("H" & kn).Select: Exit Do
    Loop
  End With
 
Laatst bewerkt:
van blad1 range A3:H3 maar blad2 naar beneden de kolom waar de macro kijkt is A ( als in deze cel een waarde staat zal de volgende regel der onder gekopieerd worden ) Pas verder aan naar je behoefte . zet ook je code tussen de tag dat is het # waar je opklikt en daar je code tussenplakt
Code:
Private Sub invoegen_Click()

    [Blad1!A3:H3].Copy
    Cells(Rows.Count, "A").End(xlUp).Offset(1, 0).Insert xlDown
    
End Sub
 

Bijlagen

Het nadeel met selectiondown is dat als je bereik een lege cel bevat dat je waarden halfweg geplakt zullen worden. Daarom is het aan te raden van onder naar boven te werken om de laatste cel in een kolom te vinden. De offset zorgt ervoor dat 1 cel onder de laatste cel geselecteerd wordt om te plakken
Code:
Sub Klantgegevensverzamelen()
' Klantgegevensverzamelen Macro
' Klantgegevens verzamelen in het opdrachtformulier
' Sneltoets: CTRL+k
    [A3:H3].Copy
    Workbooks.Open "C:\Documents and Settings\Novo\Bureaublad\Opdrachtformulier\Originelen\opdrachtformulier.xls"
    [A65536].End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
    ActiveWorkbook.Close True
    Application.CutCopyMode = False
End Sub
 
Laatst bewerkt:
Bedankt voor de hulp. Met de werkwijze van Rudi kom ik er wel uit.
Bedankt.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan