Dag allemaal,
Ik ben bezig met een (voor mij althans) kleine breinkraker (omdat ik geen volleerd VBA programmeur ben)
Ik heb een workbook met 3 sheets.
In sheet 1 kan de gebruiker (een call center medewerker) met behulp van 3 relevante cellen een overzicht van een betalingsregeling opstellen.
Belangrijkste input, totaal bedrag, aantal termijnen en begindatum. So far so easy. In sheet 1 wordt vervolgens een overzicht opgesteld van alle termijnen met eindatum, betalingskenmerk etc. That was easy
Het aantal termijnen kan variëren tussen 5 en 150
In sheet 2 worden die termijnregels vertaald naar een tabel in het juiste format om later als CSV bestand te kunnen uploaden naar een financieel pakket. De tabel is 150 regels lang omdat het maximaal aantal termijnen is wat in sheet 1 kan worden ingevuld en uitgerekend.
In sheet 3 worden de regels van meerdere betalingsregelingen verzameld die via sheet 1 worden ingevoerd en vanuit sheet 2 worden gekopieerd (paste-value)
Dat kopiëren gebeurt middels een macro die gekoppeld is aan een button in sheet 1.
Ik heb dat nu opgelost door een vaste range (B2:X151) van sheet 2 naar sheet 3 te laten kopiëren onderaan de tabel. Bij elke actie wordt de lijst in sheet 3 dus aangevuld met 150 regels uit sheet 2. Ook als de regeling maar 10 termijnen is. Dan zijn er dus 140 lege regels. Geen fraaie oplossing maar die lege regels kan ik voor de export naar het financiële systeem wel wegfilteren.
Maar daar wil ik vanaf. Ik zoek dus een manier om met die macro / VBA alleen het aantal regels van de afgesproken regeling te laten kopiëren. Dus op basis van de input in sheet 1 met het aantal termijnen.
Ik heb al een flinke tijd op allerlei fora gezocht (ook Engels) maar heb nog niks gevonden wat in de buurt komt, of ik begrijp het niet.
Misschien zoek ik wel op de verkeerde termen.
Het stukje code wat ik nu gebruik is als volgt:
Sheets("JP").Select 'sheet2
Range("B2:X151").Select
Selection.Copy
Sheets("upload").Select 'sheet3
Range("A1").Select
Selection.End(xlDown).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Maar in plaats van B2:X151 wil ik dus het liefst "B2:X(aantal_termijnen_uit_sheet_1)"
Heeft iemand dit al eens bij de hand gehad of ergens gezien, met een verwijzing ben ik ook al geholpen.
Zoals gezegd, ik ben geen VBA expert maar start meestal met het opnemen van een macro en probeer die dan in de VBA editor aan te passen.
Op mezelf kom ik op die manier niet verder nu.
En als ik deze template overdraag aan anderen wil ik liever zo veel mogelijk overbodige acties er uit hebben.
groet,
Diederik
Ik ben bezig met een (voor mij althans) kleine breinkraker (omdat ik geen volleerd VBA programmeur ben)
Ik heb een workbook met 3 sheets.
In sheet 1 kan de gebruiker (een call center medewerker) met behulp van 3 relevante cellen een overzicht van een betalingsregeling opstellen.
Belangrijkste input, totaal bedrag, aantal termijnen en begindatum. So far so easy. In sheet 1 wordt vervolgens een overzicht opgesteld van alle termijnen met eindatum, betalingskenmerk etc. That was easy
Het aantal termijnen kan variëren tussen 5 en 150
In sheet 2 worden die termijnregels vertaald naar een tabel in het juiste format om later als CSV bestand te kunnen uploaden naar een financieel pakket. De tabel is 150 regels lang omdat het maximaal aantal termijnen is wat in sheet 1 kan worden ingevuld en uitgerekend.
In sheet 3 worden de regels van meerdere betalingsregelingen verzameld die via sheet 1 worden ingevoerd en vanuit sheet 2 worden gekopieerd (paste-value)
Dat kopiëren gebeurt middels een macro die gekoppeld is aan een button in sheet 1.
Ik heb dat nu opgelost door een vaste range (B2:X151) van sheet 2 naar sheet 3 te laten kopiëren onderaan de tabel. Bij elke actie wordt de lijst in sheet 3 dus aangevuld met 150 regels uit sheet 2. Ook als de regeling maar 10 termijnen is. Dan zijn er dus 140 lege regels. Geen fraaie oplossing maar die lege regels kan ik voor de export naar het financiële systeem wel wegfilteren.
Maar daar wil ik vanaf. Ik zoek dus een manier om met die macro / VBA alleen het aantal regels van de afgesproken regeling te laten kopiëren. Dus op basis van de input in sheet 1 met het aantal termijnen.
Ik heb al een flinke tijd op allerlei fora gezocht (ook Engels) maar heb nog niks gevonden wat in de buurt komt, of ik begrijp het niet.
Misschien zoek ik wel op de verkeerde termen.
Het stukje code wat ik nu gebruik is als volgt:
Sheets("JP").Select 'sheet2
Range("B2:X151").Select
Selection.Copy
Sheets("upload").Select 'sheet3
Range("A1").Select
Selection.End(xlDown).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Maar in plaats van B2:X151 wil ik dus het liefst "B2:X(aantal_termijnen_uit_sheet_1)"
Heeft iemand dit al eens bij de hand gehad of ergens gezien, met een verwijzing ben ik ook al geholpen.
Zoals gezegd, ik ben geen VBA expert maar start meestal met het opnemen van een macro en probeer die dan in de VBA editor aan te passen.
Op mezelf kom ik op die manier niet verder nu.
En als ik deze template overdraag aan anderen wil ik liever zo veel mogelijk overbodige acties er uit hebben.
groet,
Diederik