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

Kopieer macro aanpassen om waarden niet te overschrijven

Status
Niet open voor verdere reacties.

Arito

Gebruiker
Lid geworden
31 mei 2006
Berichten
140
Zie voorbeeldsheet.

Ik heb een tab "DATA" en een tab "LOG". Ik heb een macro gemaakt die de data van de tab "DATA" (A5: D1000) kopieert naar de tab "LOG" (A1). Ik wil echter dat als er al data staat in de tab "LOG", dat de data dan eronder geschreven wordt. Weet iemand hoe ik de macro aan moet passen om dat te doen? (de macro begint met het wissen van de tab "LOG", dus dat moet sowieso weggehaald worden.

Alvast bedankt.

Code:
Sub copy()
    
    Sheets("LOG").Select
    Range("A1:D1000").Select
    Selection.Delete
    Sheets("DATA").Select
    Range("A5:D1000").Select
    Selection.copy
    Sheets("LOG").Select
    Range("A1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
End Sub
 

Bijlagen

Deze zal dan wel voldoen:

Code:
Sub copy()
    Sheets("DATA").Range("A5:D1000").copy
    Sheets("LOG").Range("A" & Range("A65000").End(xlUp).Row).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
End Sub

Succes, Cobbe
 
Bedankt voor je reactie.

Als ik jouw code copy paste naar VBA en de macro run plakt de macro de waarden vanaf de rij waarop de tabel op de eerste tab eindigt.

Bijvoorbeeld: Ik heb waarden in de tab "DATA" tot rij 45 bijgemaakt. Dan komt rij 5 van "DATA" op rij 45 van "LOG" te staan. Rij 6 van "DATA" komt daaronder op rij 46 van "LOG" te staan. Iets lijkt niet goed te gaan. Ik wil graag dat de data op tab "LOG" altijd op A1 begint.
 
de formulering van je vraag is intern tegenstrijdig: altijd beginnen in A1 van werkblad log, en waarden niet overschrijven.

Code:
Sub kopie()
  sheets("LOG").cells.clearcontents
  [DATA!A5:D1000].copy  [LOG!A1]
End Sub
 
Laatst bewerkt:
Indien je de gegevens bovenaan wil invoegen kan volgende macro je helpen:

Code:
Sub copy()
    Sheets("DATA").Range("A5:D" & Sheets("Data").UsedRange.Rows.Count).copy
    Sheets("Log").Rows(Sheets("Data").UsedRange.Rows.Count - 4).Insert
    Sheets("LOG").Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
End Sub

Deze plakt op LOG!A1 en overschrijft de oude gegevens niet.

Cobbe
 
Als ik die laatste macro kopieer, krijg ik het resultaat zoals in het plaatje beneden. Het bestand werd ineens 1.6mb groot dus die kan ik er niet nogmaals bijvoegen.

snb: Ik wil graag dat de informatie in A1 begint. Echter als er in A1 al wat staat, zou het in A2 moeten beginnen etc.

 
Code:
Sub kopie()
  [DATA!A5:D1000].copy  [LOG!A1].offset(log.columns(1).specialcells(xlcelltypeconstants).count+1)
End Sub
 
Ik heb het uiteindelijk met een hulpkolom E opgelost. E geeft een waarde 1 als de regel gekopieerd moet worden. Vervolgens met de volgende macro het probleem opgelost:

Code:
Sub copy()
 Application.ScreenUpdating = False
  For Each cl In Sheets("DATA").Columns(5).Cells
    If cl.Value = 1 Then
      cl.Offset(, -4).Resize(, 4).copy
      Sheets("LOG").Cells(Rows.Count, 1).End(xlUp).Offset(1).PasteSpecial xlValues
      Range("a1").Select
    End If
  Next
    Application.ScreenUpdating = True
End Sub

Dank voor de hulp.
 
Toch nog niet opgelost. In werkelijkheid staat de "LOG" tab in een ander document. Iemand een idee hoe ik de macro aan kan passen om aan te geven dat het naar een ander bestand gekopieerd moet worden?

Bijvoorbeeld naar de sheet in directory: S:\Arito\LOG.xls
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan