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

vba, excel, vraag over artikelomschrijving kopieren naar regelniveau

Status
Niet open voor verdere reacties.

piet1234

Gebruiker
Lid geworden
1 apr 2011
Berichten
20
Hallo allemaal,

ik heb deze vraag al eens eerder gesteld en ben toen prima geholpen met de macro in het bijgevoegde bestandje.
Nu heb ik de macro aardig kunnen "ontleden" zodat ik ook een beetje begrijp wat die doet.
Alleen nu zou ik hetzelfde graag willen alleen zonder de omschrijving boven de tabellen (dan krijg ik een foutmelding op de bestaande macro)
Destijds heb ik gekozen voor de macro van hsv.

Ik heb een voorbeeldbestandje toegevoegd en in het tabblad na macro(2) is hoe het zou moeten zijn.

P.s. misschien dat iemand de moeite wil nemen om de macro uit te leggen (wat doet welk onderdeel).

Iedereen alvast bedankt voor de moeite!

M.v.g. Piet.
Bekijk bijlage Piet1234.xlsm
 
Piet,

Om de macro geschikt te maken moet je de volgende verandering doorvoeren.
Code:
Sub hsv()
Dim i As Long, rng As Range
For i = 1 To Columns(2).SpecialCells(2).Areas.Count
    Set rng = Columns(2).SpecialCells(2).Areas(i).SpecialCells(2)
    rng.Offset(, 4) = Range(Split(rng.Address, ":")(0)).Offset(-2, 2).Value
Next
End Sub

In de eerste regel wordt bepaald hoeveel reeksen er zijn in de kolom B (=Columns(2)) dit zijn er drie
dus wordt de macro drie keer doorlopen.
Dan wordt in kolom B gekeken naar de eerste groep met cellen die gevuld zijn (Columns(2).SpecialCells(2).Areas(i).SpecialCells(2))
SpecialCells(2) zijn gewoon de cellen die gevuld zijn met een getal of tekst (geen formules).
Het gebied wordt opgeslagen in de range variabele rng.
De range kun je opvragen met rng.Address en zal voor de eerst reeks $B$4:$B$8 zijn.
Goed hier vandaan kunnen we verder kijken. We moeten nu vier kolommen opschuiven dus rng.offset(0,4) om de range
te krijgen die we moeten invullen ($F$4:$F$8).
En wat moeten we invullen? wel dat is wat lastiger we nemen dus van het adres het eerste deel
tot de dubbele punt (Split(rng.Address, ":")(0))), dit geeft "$B$4" en we weten dat vanaf dipt punt moeten invullen wat twee rijen
naar boven en twee kolommen naar links staat (Range(Split(rng.Address, ":")(0)).Offset(-2, 2).Value)
Dit wordt dus in gevuld in de al eerder gevonden reeks.

Ik weet het het is wat lastig maar zo werkt dit programmaatje.

Veel Succes.
 
Goedemorgen,

bedankt voor de heldere uitleg van de werking van de onderdelen van deze macro.
Dat Offset verhaal had ik zelf al begrepen maar dat verhaal met die ":" ging me toch iets boven de pet.

Gr. Piet.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan