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

kopie kolommen naar ander blad (andere kolom)

Status
Niet open voor verdere reacties.

excelkees

Gebruiker
Lid geworden
7 sep 2010
Berichten
155
Hallo,
is het mogelijk om van blad 1 kolommen met variabele rij-lengte (kolom A is maatgevend) in een andere kolomvolgorde (bijv.: g1,a1,e1,d1) te kopieeren en te plakken in blad 2
alvast mijn dank, gr Kees
 

Bijlagen

Philiep, deze kon ik nog niet, is mooi opgelost, dank en groetjes Kees
code iets aangepast:
Sub dotchie()
Dim sht As Worksheet
Application.ScreenUpdating = False
Worksheets("Blad1").UsedRange.Select
Selection.Copy
Sheets("Test").Select
Range("A1").Select
ActiveSheet.Paste

Sheets("Test").Columns("E:E").Cut Destination:=Columns("K:K")
Sheets("Test").Columns("D:D").Cut Destination:=Columns("J:J")
Sheets("Test").Columns("G:G").Cut Destination:=Columns("I:I")

Columns("D:H").EntireColumn.Delete

Application.ScreenUpdating = True
End Sub
 
@dotchie:

Dat kan veel simpeler:

Code:
Sub M_snb()
   Sheets("test").Cells(1).Resize(Sheets("Blad1").UsedRange.Rows.Count, 5) = Application.Index(Sheets("Blad1").UsedRange.Value, [row(1:2000)], Array(1, 2, 4, 5, 7))
End Sub

En ik dacht dat je onderhand het credo 'vermijd 'Select' en 'Activate' zou hebben overgenomen.
In plaats van

Code:
Sub dotchie()
Dim sht As Worksheet
Application.ScreenUpdating = False
 Worksheets("Blad1").UsedRange.Select
    Selection.Copy
    Sheets("Test").Select
    Range("A1").Select
    ActiveSheet.Paste
    
    Sheets("Test").Columns("D:D").Cut Destination:=Columns("C:C")
    Sheets("Test").Columns("E:E").Cut Destination:=Columns("D:D")
    Sheets("Test").Columns("G:G").Cut Destination:=Columns("E:E")
   
    Columns("F:H").ClearContents
    
    Application.ScreenUpdating = True
End Sub

is dit robuuster:

Code:
Sub dotchie_improved()
  Application.ScreenUpdating = False

  with sheets("Test")
    sheets("Blad1").UsedRange.resize(,7).copy .Range("A1")
    
    .Columns(4).resize(,2).Cut .Columns(3)
    .Columns(7).Cut .Columns(5)
  end with

  Application.ScreenUpdating = True
End Sub
 
Laatst bewerkt:
Hoi Snbie:thumb:
Klopt
En ik dacht dat je onderhand het credo 'vermijd 'Select' en 'Activate' zou hebben overgenomen.
Maar kon niet direct een andere oplossing bedenken:o
In ieder geval is TS geholpen:)(daar doe ik het tenslotte voor)
 
Sub dotchie_improved

Hoi Snbie,
die Sub M_snb() is idd nog mooier, de verbeterde code Sub dotchie_improved geeft bij mij een fout melding mn plakgebied niet dezelfde vorm en grootte
beide hartstikke bedankt gr K
 
fout bij regel
.Columns(4).Resize(, 2).Cut .Columns(3)
als ik dit verander bijv
.Columns(4).Resize(, 1).Cut .Columns(3)
dan loopt ie wel ?
 
Code:
Sub dotchie_improved()
  Application.ScreenUpdating = False

  with sheets("Test")
    sheets("Blad1").UsedRange.resize(,7).copy .Range("A1")
    
    .Columns(4).resize(,2).Cut .cells(1,3)
    .Columns(7).Cut .Cells(1,5)
  end with

  Application.ScreenUpdating = True
End Sub
 
Hoi Snbie,
zonder problemen, je hebt me weer goed geholpen, gr Kees
Hoi Philiep, ook jij dank voor je reacties, gr K
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan