Vertikaal naar horizontaal

Status
Niet open voor verdere reacties.

Oude leerling

Gebruiker
Lid geworden
30 aug 2010
Berichten
566
In kolom C staan vanaf C4 een aantal waarden.
Nu wil ik deze waarden in blokjes van 4 stuks kopiëren en horizontaal plaatsen , startend vanaf J9.
Dit moet zoveel keer gedaan worden als wat in J4 staat.
Jaap
 
Een voorbeeldbestand zit er niet in ?
 
Code:
Sub M_snb()
   sn = Cells(4, 3).CurrentRegion
   
   For j = 0 To Cells(4, 10) - 1
      Cells(9 + j, 10).Resize(, 4) = Array(sn(4 * j + 1, 1), sn(4 * j + 2, 1), sn(4 * j + 3, 1), sn(4 * j + 4, 1))
   Next
End Sub

PS. Analyseer de code; verander er wat aan en kijk wat er gebeurt: word je wijzer van.
 
snb,
Code werkt perfect
Ongelofelijk , zoveel kennis er bij jou zit.
Ik maak me steeds meer eigen en steek er veel van op.
Bedankt Jaap
 
Snb ,

Jouw code (regel 15-16-17-18) van het geheel doet in de gehele macro ineens iets heel anders.
Volgens de code zou hij kolom B moeten kopieren naar horizontaal , Sn = Cells(4, 2)
maar hij het word steeds kolom A
Ik zit al een paar uur te zoeken maar kom er niet uit
Daarom maar het gehele bestand bijgevoegd. Zou u kunnen vinden wat er niet klopt Wat heb ik nou fout gedaan??
Jaap
Bekijk bijlage Jeu de Boule 1.xlsm
 
Begin bij het begin: verwijder eerst alle 'selects'

bijv.
Code:
  Sheets("1e-ronde").Range("I9:N17,A4:C39").ClearContents
    
  Sheets("Inventarisatie").Range("A1:D36").Sort Sheets("Inventarisatie").Range("C1")

Geef vervolgens bij alle gebieden aan in welke sheet die zich bevinden.
 
De eerste 14 regels zou ik vervangen door:

Code:
  With Sheets("1e-ronde")
    .Range("I9:N17,A4:C39").ClearContents
    .Range("A4:C39") = Sheets("Inventarisatie").Range("A1:D36").Value
    .Range("A4:C39").Sort .Range("C4")
  End With

In regel 15 staat nog steeds geen verwijzing naar het werkblad.
 
Laatst bewerkt:
Ik heb de eerste 14 regels vervangen . (geheel wordt steeds korter en ziet er wel goed uit)
maar nu doet hij helemaal niets meer als ik de macro in werking zet met de knop "Naar 1e-ronde" .
Mijn kennis schiet echt tekort want ik weet ook niet hoe ik regel 15 moet laten verwijzen naar werkblad "1e-ronde" .


Bekijk bijlage Jeu de Boule 1.xlsm
 
Ik zou zeggen: ga er nog eens rustig voor zitten.

Misschien kun je een eenvoudiger opzet maken.
Welk basisboek VBA gebruik je ?
Want ik zie op dit moment nog niet zo snel een eind aan de adviezen die je kunt gebruiken.
 
Snb,

Ik gebruik het boek "Leer jezelf gemakkelijk macro's programmeren met VBA" van Wim de Groot
In dat boek wordt lang niet alles behandeld.
Het meeste heb ik eigenlijk opgestoken van Jullie , www.Helpmij.nl

Jou code werkt separaat prima en waarom hij het niet doet in combinatie met de rest (mijn codes)
snap ik nog steeds niet.
Het moet iets foutief zijn in het geheel , maar wat??

Heb van deze sessie toch veel opgestoken o.a. het liefs niet gebruiken van .Select
en het samenvoegen van opdrachten.

Snb toch bedankt voor je geduld met mij en ik ga eens zoeken naar een andere manier
om gegevens verticaal , in blokjes , te verplaatsen naar horizontaal.
Ik sluit het onderwerp nog niet af , misschien dat een ander de fout of een oplossing ziet.

Jaap
 
Snb ,

Heb dank zij het van jou geleerd hebbende een andere oplossing gevonden.
Ben best een beetje groos op mijn eigen.

Dim i As Integer
10 For i = 0 To Range("J4").Value - 1
11 Range("B" & ((4 * i) + 4) & ":B" & ((4 * i) + 7)).Copy
12 Range("J" & (9 + i)).PasteSpecial Paste:=xlPasteValues, Transpose:=True
13 Next i

Jaap
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan