Excel automatisch regel invoegen met Macro

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

Anoniem: 679196

Topicstarter
Ik zou graag een wit regel in willen voegen na iedere andere werknemer/personeelsnummer. Ik heb al het een en ander geprobeerd maar kom er helaas niet uit. Is het mogelijk dit te doen met behulp van een macro, en zo ja hoe?

Alvast bedankt!

Bijgevoegd zit een printscreen van het bestand:

https://www.dropbox.com/s.../Printscreen%202.png?dl=0
Excel 2013

Alle reacties


Acties:
  • +1 Henk 'm!

  • Atanamir
  • Registratie: December 2014
  • Laatst online: 06-06 11:37
Tuurlijk kan dat, maar volgens mij is dat niet de beste oplossing.
Je bewaart je gegevens in een database en daar zou je geen lege regels in willen hebben lijkt me.

Kun je niet een pivot table maken van je dataset?
Hierin kun je selecteren welke gegevens je wilt zien, en ook makkelijk witregels toevoegen. (in Row labels > field settings > layout & print > Insert blank line after each label)

Acties:
  • +1 Henk 'm!

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Dat moet je inderdaad echt niet willen. Maak als bovenstaande niet gaat liever de betreffende regel hoger zodat je optisch witruimte krijgt.

Hoe dan ook: ja, kan. Maar geef dan even de code die je al hebt, overwegingen, etc.

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


Acties:
  • 0 Henk 'm!

Anoniem: 679196

Topicstarter
Wij kopiëren de uren van iedere week uit de database in een appart excel bestand. Omdat dit het makkelijkst is voor de urenregistratie en planning.

Dus een mogelijkheid om een witregel in te voegen met een macro zou het makkelijkst zijn.
Zelf heb ik dit alleen het stuk gemaakt om enkele kolomen automatisch te verbergen. Die witregel kom ik helaas niet uit.

Acties:
  • +1 Henk 'm!

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Nog een keer dan: welke code heb je al wel, waar loop je vast, waar kom je niet uit, waarom is de eerder geopperde suggestie (verhoog de regelhoogte zodat je wel de visuele scheiding hebt zonder je bestand te vervuilen met lege regels) niet werkbaar?

We denken graag mee. :)

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


Acties:
  • +1 Henk 'm!

  • Atanamir
  • Registratie: December 2014
  • Laatst online: 06-06 11:37
En een pivot table is geen optie?

Gewoon een pivot table toevoegen op het tabblad waar je de uren registratie in plakt. Dan wordt het iedere week ook automatisch geupdate.

Je kun dan in de pivot table ook kiezen welke kolommen je wilt zien, en welke je dus wilt verwijderen.
Vooralsnog klinkt dat voor mij als de beste oplossing...

Als je echt met VBA moet dan kun je met onderstaande een regel toevoegen.
Rows([row number]).Insert Shift:xlDown

Ik zou het dan even in een loopje doen. zoiets: (niet getest)
from i = 2 to lastrow
with worksheet
if .cells(4,i).value <> .cells(4,i-1) then
Rows(i).Insert Shift:xlDown
end if
end with
next i

Acties:
  • +1 Henk 'm!

  • heuveltje
  • Registratie: Februari 2000
  • Laatst online: 06-06 18:37

heuveltje

KoelkastFilosoof

Achteruitstappen gaat sneller :)

lastrow = Range("a" & Rows.Count).End(xlUp).Row
For i = lastrow To 1 Step -1
Rows(i).Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Next

Heuveltjes CPU geschiedenis door de jaren heen : AMD 486dx4 100, Cyrix PR166+, Intel P233MMX, Intel Celeron 366Mhz, AMD K6-450, AMD duron 600, AMD Thunderbird 1200mhz, AMD Athlon 64 x2 5600, AMD Phenom X3 720, Intel i5 4460, AMD Ryzen 5 3600 5800x3d


Acties:
  • 0 Henk 'm!

Anoniem: 679196

Topicstarter
Bedankt voor de reacties!

ik wil graag na iedere werknemer een lege regel en niet na iedere regel een extra witregel.
daarom is een verhoogde regelhoogte geen optie.

mijn excuses als ik het niet goed had uitgelegd :)

Acties:
  • +1 Henk 'm!

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Regelhoogte is per regel in te stellen. :)

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


Acties:
  • +1 Henk 'm!

  • MrSenne
  • Registratie: Maart 2012
  • Laatst online: 06-06 22:02
Anoniem: 679196 schreef op woensdag 24 mei 2017 @ 10:31:
Bedankt voor de reacties!

ik wil graag na iedere werknemer een lege regel en niet na iedere regel een extra witregel.
daarom is een verhoogde regelhoogte geen optie.

mijn excuses als ik het niet goed had uitgelegd :)
Het gaat niet zozeer om het niet goed uitleggen, het gaat meer om het feit dat er wat eigen inzet verwacht wordt en je dus gerust mag posten welke code je zelf al geprobeerd hebt, of welke Google resultaten je al geprobeerd hebt. :)

Zoals @Lustucru zegt, we denken graag mee, maar gaan niet alles voor je doen.

Acties:
  • 0 Henk 'm!

Anoniem: 679196

Topicstarter
Ik had dit als eerst gevonden op google.

Sub Test3()
Dim i As Integer
For i = 1 To Selection.CurrentRegion.Rows.Count - 1
ActiveCell.Offset(1, 0).Range("A1:A4").Select
Selection.EntireRow.Insert
ActiveCell.Offset(4, 0).Select
Next i
End Sub

dit had ik zo proberen aan te passen dat hij i.p.v. drie maar een regel invoegd. maar dan krijg ik weer een witregel na iedere regel, en dat ik niet mijn bedoeling.

Op youtube had ik een voorbeeld gevonden die bovenin een witregel toevoegd, ik ben alleen niet handig genoeg met VBA om dit aan te passen aan wat ik nodig heb, vandaar dat ik jullie hulp vroeg.

Acties:
  • +1 Henk 'm!

  • MrSenne
  • Registratie: Maart 2012
  • Laatst online: 06-06 22:02
Kan je anders eens een screenshot posten van hoe je Excel sheet er uitziet? Dan is het gemakkelijker om te zien waar er nu exact een witregel toegevoegd moet worden.

Hoe ik het nu zie lijkt het mij het eenvoudigst als je de regel waarin het personeelsnummer staat, gewoon 2x zo hoog maakt. Dan krijg je een optische witregel.

Acties:
  • 0 Henk 'm!

Anoniem: 679196

Topicstarter
Ik heb twee printscreens gemaakt, een van hoe het nu is:

https://www.dropbox.com/s.../Printscreen%203.png?dl=0

En zo zou ik het graag willen hebben dat hij dat automatisch doet bij ieder verschillend personeelsnummer.

https://www.dropbox.com/s.../Printscreen%204.png?dl=0

Acties:
  • 0 Henk 'm!

Anoniem: 679196

Topicstarter
Sub Berekenen()
'
' Berekenen Macro
'
' Keyboard Shortcut: Ctrl+q
'
ActiveWindow.SmallScroll Down:=-196
Columns("O:AX").Select
Selection.EntireColumn.Hidden = True
Columns("AZ:BG").Select
Selection.EntireColumn.Hidden = True

lastrow = Range("a" & Rows.Count).End(xlUp).Row
For i = lastrow To 1 Step -1
Rows(i).Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Next

End Sub


Dit is de macro die ik nu heb, deze voegt alleen om de regel een nieuwe witregel in

Acties:
  • +1 Henk 'm!

  • Pindakaas
  • Registratie: December 2010
  • Laatst online: 08:02
Misschien even een stapje terug, maar waarom wil je een witregel ertussen? Is dat puur optisch of komt daar een subtotaal oid in te staan?

don't mind me


Acties:
  • +1 Henk 'm!

Anoniem: 679196

Topicstarter
Hier wil ik inderdaad het een subtotaal invoegen, zodat hij van iedere werkweek alle uren en overuren optelt

Acties:
  • +1 Henk 'm!

  • MrSenne
  • Registratie: Maart 2012
  • Laatst online: 06-06 22:02
Mijn Macro kennis binnen Excel is beperkt, maar ik zie dat je telkens om de 7 regels een witregel wilt. Misschien dat je hier iets mee kan? Reken dan wel 1 offset in voor je column headers.

Iets in deze trend;
https://www.mrexcel.com/f...-after-every-nth-row.html

Acties:
  • +2 Henk 'm!

  • Pindakaas
  • Registratie: December 2010
  • Laatst online: 08:02
in dat geval kan het veeeeel simpeler.

Selecteer de hele tabel. Ga naar het tabblad 'Gegevens' (of "DATA") en klik op het knopje "Subtotaal" helemaal rechts.

Je krijgt nu een subtotaal per personeelsnummer

[ Voor 18% gewijzigd door Pindakaas op 24-05-2017 11:01 ]

don't mind me


Acties:
  • 0 Henk 'm!

Anoniem: 679196

Topicstarter
Als ik het via gegevens en subtotaal wil doe, ben ik gebonden aan een vast bereik. het klopt inderdaad dat het altijd om de 7 regels verspringt

Acties:
  • +1 Henk 'm!

  • Pindakaas
  • Registratie: December 2010
  • Laatst online: 08:02
Anoniem: 679196 schreef op woensdag 24 mei 2017 @ 11:05:
Als ik het via gegevens en subtotaal wil doe, ben ik gebonden aan een vast bereik. het klopt inderdaad dat het altijd om de 7 regels verspringt
Hoe bedoel je dat precies?
Gebonden aan een vast bereik? Je bereik is toch gewoon zo groot als het gebied dat jij selecteerd?

don't mind me


Acties:
  • 0 Henk 'm!

Anoniem: 679196

Topicstarter
Ja dat klopt, alleen het bereik kan iedere week veranderen. Bijvoorbeeld als er een personeelslid bijkomt.

Acties:
  • +1 Henk 'm!

  • Pindakaas
  • Registratie: December 2010
  • Laatst online: 08:02
Uiteraard, maar hoe moeilijk is het om even opnieuw op het knopje subtotalen te drukken?

Net zo makkelijk als een macro aan te zetten lijkt mij?

Daarnaast zou ik altijd zo veel mogelijk proberen om macro's te vermijden als dat kan. Het blijft een stukje code wat zelf gemaakt is dat mogelijk niet altijd lekker werkt. (als er bijvoorbeeld eens 8 regels staan i.p.v. 7 ga je al de mist in)

Edit:
Je gaf zelf al aan dat je de data uit een database exporteert. Dit doe ik ook vrij regelamtig.
Ik zou het als volgt doen elke week:

1. Export uit de database in een excel sheet/
2. Formules toevoegen waar het total aantal uren en overuren berekend wordt.
3. Op knopje Subtotaal klikken
4. Klaar, koffie halen voor de collega's!

[ Voor 30% gewijzigd door Pindakaas op 24-05-2017 11:17 ]

don't mind me


Acties:
  • +2 Henk 'm!

  • Atanamir
  • Registratie: December 2014
  • Laatst online: 06-06 11:37
Ik blijf bij de pivot table... even op refresh klikken en eventuele nieuwe personeelsleden staan erin. :)

Acties:
  • 0 Henk 'm!

Anoniem: 679196

Topicstarter
Het is uiteindelijk een macro geworken met waarin de functie "subtotalen" verwerkt zit:

Sub Berekenen()
'
' Berekenen Macro
'
' Keyboard Shortcut: Ctrl+q
'
ActiveWindow.SmallScroll Down:=-196
Columns("O:AX").Select
Selection.EntireColumn.Hidden = True
Columns("AZ:BG").Select
Selection.EntireColumn.Hidden = True

Range("BH3").Select
ActiveCell.FormulaR1C1 = "Uren"
Range("BH4").Select
ActiveCell.FormulaR1C1 = "=ROUNDDOWN(RC[-9]*96,0)/4"
Selection.AutoFill Destination:=Range("BH4:BH300"), Type:=xlFillDefault
Range("BH4:BH300").Select
ActiveWindow.SmallScroll Down:=-16

Range("BH4").Select
Selection.AutoFill Destination:=Range("BH4:BH280"), Type:=xlFillDefault
Range("BH4:BN300").Select
ActiveWindow.SmallScroll Down:=-324
Selection.NumberFormat = "0.00"


Range("O:AX,AZ:BG").Select
Range("A3").Activate
Selection.EntireColumn.Hidden = True
Range("A3:AY300").Select
Selection.Subtotal GroupBy:=2, Function:=xlSum, TotalList:=Array(2), _
Replace:=True, PageBreaks:=False, SummaryBelowData:=True

Range("BI3").Select
ActiveCell.FormulaR1C1 = "130%"

Range("BJ3").Select
ActiveCell.FormulaR1C1 = "150%"

Range("BK3").Select
ActiveCell.FormulaR1C1 = "175%"

Range("BL3").Select
ActiveCell.FormulaR1C1 = "250%"

Range("BM3").Select
ActiveCell.FormulaR1C1 = "Snipperdag"

Range("BN3").Select
ActiveCell.FormulaR1C1 = "+/- uren"


End Sub


Iedereen bedankt voor het mee denken en helpen! :):)

Acties:
  • 0 Henk 'm!

  • Pindakaas
  • Registratie: December 2010
  • Laatst online: 08:02
Succes ermee!

Wel jammer dat je uiteindelijk toch voor een Macro bent gegaan.
Zo ingewikkelt is de procedure niet en zoals gezegd, met een draaitabel ben je helemaal snel klaar.

Anyways, als het werkt, veel plezier ermee!

don't mind me


Acties:
  • 0 Henk 'm!

  • heuveltje
  • Registratie: Februari 2000
  • Laatst online: 06-06 18:37

heuveltje

KoelkastFilosoof

JeroenF schreef op woensdag 24 mei 2017 @ 15:31:
Succes ermee!

Wel jammer dat je uiteindelijk toch voor een Macro bent gegaan.
Zo ingewikkelt is de procedure niet en zoals gezegd, met een draaitabel ben je helemaal snel klaar.

Anyways, als het werkt, veel plezier ermee!
Een goedwerkende macro is gewoon met i shortcut op te roepen, en doet zijn ding.
Ik zie het probleem niet ? Bij ons word de halve maandrapportage via een macro uitgedraaid.
Anoniem: 679196 schreef op woensdag 24 mei 2017 @ 15:28:
Het is uiteindelijk een macro geworken met waarin de functie "subtotalen" verwerkt zit:
<knip>

Iedereen bedankt voor het mee denken en helpen! :):)
Ik zou hem wel iets opruimen, dat maakt het allemaal wat overzichtelijker :)
Voor de zekerheid, je hebt door dat deze macro alles na regel 280 negeert ?

Heuveltjes CPU geschiedenis door de jaren heen : AMD 486dx4 100, Cyrix PR166+, Intel P233MMX, Intel Celeron 366Mhz, AMD K6-450, AMD duron 600, AMD Thunderbird 1200mhz, AMD Athlon 64 x2 5600, AMD Phenom X3 720, Intel i5 4460, AMD Ryzen 5 3600 5800x3d


Acties:
  • 0 Henk 'm!

  • Pindakaas
  • Registratie: December 2010
  • Laatst online: 08:02
heuveltje schreef op woensdag 24 mei 2017 @ 15:46:
[...]


Een goedwerkende macro is gewoon met i shortcut op te roepen, en doet zijn ding.
Ik zie het probleem niet ? Bij ons word de halve maandrapportage via een macro uitgedraaid.
Een goedwerkende macro doet het inderdaad prima. Probleem is vaak dat (in mijn beleving) de meeste macro's niet zo goed zijn geschreven en daardoor vaak kapot gaan als er een klein dingetje in het werkblad aangepast wordt.
Als het echt niet anders kan is een macro een prima oplossing, maar in dit geval kan het problem ook zeer gemakkelijk opgelost worden zonder macro.

don't mind me

Pagina: 1