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

cellen met waarde kopieren en plakken in ander excel document eerste lege regel macro

Status
Niet open voor verdere reacties.

Peer44

Gebruiker
Lid geworden
25 jan 2008
Berichten
224
Hallo,

voor iedere dag maken we een nieuw excel document aan met daarin de productieplanning.
Nu wil ik vanuit het productiedocument, blad: database, die rijen kopieren (vanaf rij2) die waardes bevatten.

het bereik van de rijen is a2 t/m a40 (in die rijen heb ik formules staan: als(blad1!a2="";"";blad1!a2) etc.

ik probeer een macro te maken die er voor zorgt dat:

de rijen met waarde gekopieerd worden naar een database bestand, op de eerste lege regel.
de volgende code heb ik tot nu toe alleen ik krijg een foutmelding

Code:
Sub kopieren()
With Application

    .ScreenUpdating = False

'selecteert alleen de cellen met waarden vanaf rij2'
Selection.SpecialCells(xlCellTypeConstants, 23).Select("A2:S40").Copy

'open het database bestand'
Workbooks.Open "U:\in ontwikkeling\productie\database test\database productieplannig.xlsx"

'plak op de eerste lege regel de cellen als waarde'
[Blad1!A65536].End(xlUp).Offset(1).PasteSpecial xlPasteValues
         
ActiveWorkbook.Close True
End With


End Sub

Foutmelding: "Fout 450 tijdens uitvoering" , onjuist aantal argumenten of ongeldige eigenschappentoewijzing.

hoe kan dit worden opgelost?
 
Dat komt omdat je gebruik maakt van Selection terwijl er niets is geselecteerd.
Je zou gebruik kunnen maken van een autofilter om vervolgens de betreffende cellen in 1 keer over te zetten of aangeven dat in het bereik A2 t/m S40 moet worden gekeken.

Met vriendelijke groet,


Roncancio
 
Dat komt omdat je gebruik maakt van Selection terwijl er niets is geselecteerd.
Je zou gebruik kunnen maken van een autofilter om vervolgens de betreffende cellen in 1 keer over te zetten of aangeven dat in het bereik A2 t/m S40 moet worden gekeken.

Met vriendelijke groet,


Roncancio

Beste Roncancio,

kom er helaas niet uit tot dusver heb ik gevonden:

Code:
Sub kopieren()

 Dim rng As Range
 Dim rng2 As Range

'selecteert alleen de cellen met waarden vanaf rij2'
  Sheets("database").Select
    
    Range("A1").Select
    Selection.AutoFilter
    ActiveSheet.Range("$A$1:$S$40").AutoFilter Field:=1, Criteria1:="<>"
With ActiveSheet.AutoFilter.Range
 On Error Resume Next
   Set rng2 = .Offset(1, 0).Resize(.Rows.Count - 1, 1) _
       .SpecialCells(xlCellTypeVisible)
 On Error GoTo 0
End With
If rng2 Is Nothing Then
   MsgBox "Geen data"
Else
   Worksheets("database").Cells.Clear
   Set rng = ActiveSheet.AutoFilter.Range
   rng.Offset(1, 0).Resize(rng.Rows.Count - 1).Copy _
     
End If
   
'open het database bestand'
Workbooks.Open "U:\in ontwikkeling\productie\database test\database productieplanning.xlsx"

'plak op de eerste lege regel de cellen als waarde'
[Blad1!A65536].End(xlUp).Offset(1).PasteSpecial xlPasteValues
         
ActiveWorkbook.Close True



End Sub

Het probleem is dat ik niet weet hoe ik in kan geven dat de selectie uit de autofilter gekopieerd moet worden .......
 
Simpel voorbeeld:

Code:
Range("A1").CurrentRegion.AutoFilter 1, "Peer"
Range("A2:S40").Copy Blad2.Range("A2")

In het bereik vanaf cel A1 t/m de laatste aaneengesloten cel (bijv S40) wordt in de 1e kolom gezocht naar Peer.
Het bereik A2 t/m S40 wordt naar het 2e werkblad gekopieerd.

Met vriendelijke groet,


Roncancio
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan