Vraag & Antwoord

Anders (software)

Excel; Macro's met relatieve celverwijzingen

5 antwoorden
  • Ik gebruik Microsoft Excel 2002. Nu lukt het mij maar niet om goed met macro's te werken. Probleem: Ik heb een hele lange tabel met een stuk of tien kolommen. Ieder "record" bestaat echter uit twee regels en daardoor is het onmogelijk om goed te kunnen sorteren. In totaal zijn er ruim 1000 "records". Op de eerste regel staan alle hoofdgegevens (nummer, titel, datum, soort item, etc.). In één kolom heeft elk "record" echter op de tweede regel een cel met toelichting, precies onder de cel in de eerste regel waarin de titel van het "record" staat, dus in dezelfde kolom. (Die toelichting kan soms - in dezelfde cel - uit meerdere regels betaan.) Nu wil ik van elk record de toelichting (van de tweede regel dus) verplaatsen naar, en toevoegen in de cel waarin ook de titel staat. (Met gebruik van de regelovergang Alt-Enter, zodat de toelichting in dezelfde cel als de titel op een nieuwe regel komt te staan. Het eindresultaat wordt dus: [b:a5ae2481c5]TITEL;[/b:a5ae2481c5] Toelichting die eerst in de cel op de volgende regel stond en die in veel gevallen uit meerdere regels kan bestaan. Als ik de handelingen hiervoor de eerste keer opneem met de macrorecorder en vervolgens wil afspelen gaat het niet goed: - Opname macro wordt gestart - Ik begin dan bijv. in de cel met de toelichting (in de cel gaan, tekst selecteren, tekst knippen, uit de cel gaan) - ga dan naar de cel erboven met de titel (in de cel gaan, naar het einde, Alt-Enter, tekst plakken, uit de cel gaan) - en verplaats dan de cursor naar de cel met de toelichting van het vólgende "record" - Opname macro wordt gestopt. Als ik nu de macro wil afspelen wordt alleen de cel met de toelichting van het volgende record gewist en blijft de cursor op die cel staan of ik krijg een melding: "Opname is niet mogelijk". Verder niets. Kortom, hoe krijg ik nou met zo min mogelijk moeite records die slechts uit één rij bestaan zodat ik diverse sorteringen kan maken? Alvast bedankt voor de hulp! Groeten, SayCheese!
  • [code:1:960619fa2a]Sub test() ActiveCell.FormulaArray = ActiveCell.Value + Chr$(10) + ActiveCell.Offset(1, 0).Value End Sub[/code:1:960619fa2a] Achter de celinhoud van de actieve cel wordt een ALT+return geplaatst en op de 2de regel komt de inhoud van de onderliggende cel.
  • Hoi Doof, Heel erg bedankt voor je hulp. Heb het even uitgeprobeerd en uiteraard gebeurt er wat je hebt aangegeven. Heb alleen nog twee probleempjes: a) Aan het eind van de macro zoals je die nu hebt gegeven zou de cursor óók nog twee regels naar beneden moeten worden verplaatst om de macro meteen weer te kunnen uitvoeren op het volgende "record". Ik heb geprobeerd dat zelf toe te voegen, maar dat gaat niet goed. Eigenlijk zat daar ook al het grootste probleem. Kennelijk werkt zo'n macro met absolute en niet met relatieve verplaatsingen. b) De oorspronkelijke "titel" is vetgedrukt en in een kleur (blauw). De oorspronkelijke toelichting in de cel daaronder is niet vet en gewoon zwart. Voor een betere leesbaarheid (het is een hele grote tabel) zou dat verschil in opmaak bij het uitvoeren van de macro ook behouden moeten blijven. Als ik je macro nú uitvoer wordt ook de toelichting vet en blauw. Ook dit heb ik geprobeerd in jouw macro aan te passen, maar ook hier kon ik niet goed uitkomen. Misschien kun je nóg een keer helpen? Bedankt, SayCheese
  • [code:1:a16e506b05]Sub test1() L1 = Len(ActiveCell.Value) Selection.ClearFormats ActiveCell.FormulaArray = ActiveCell.Value + Chr$(10) + ActiveCell.Offset(1, 0).Value With ActiveCell.Characters(Start:=1, Length:=L1).Font .FontStyle = "Vet" .ColorIndex = 5 End With ActiveCell.Offset(2, 0).Range("A1").Select End Sub [/code:1:a16e506b05] De regel ActiveCell.Offset(2, 0).Range("A1").Select verplaatst de cursor 2 plaatsen naar beneden en 0 naar rechts vanaf de huidige positie. Negatieve getallen is verplaatsing naar links en boven.[/code]
  • 't Beste is nog om de macro op te roepen (via de Visual Basic Editor) en een kopietje (Ctrl C / Ctrl V) hier op 't forum in een berichtvenster te zetten. Anderen kunnen dan aangeven wat er niet klopt.......

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.