Regels invoegen a.d.v.h. variabele of een celwaarde

Status
Niet open voor verdere reacties.

ExcelTonnie

Gebruiker
Lid geworden
5 jul 2016
Berichten
311
Graag zou ik het volgende willen realiseren.
voorbeeld bestand bijgevoegd.

Wat is de bedoeling:
Regel 11 moet gekopieerd worden.
Het aantal maal dat deze regel ingevoegd moet worden is afhankelijk van een waarde die in cel B2 staat bijv.
Daarna moeten de kopieen (blokkade Nr:) verhoogd worden wat in kolom A staan.

Dus bijv. 5 kopieen:
20210068 enz enz
20210068 enz enz
20210068 enz enz
20210068 enz enz
20210068 enz enz

voorheen:
20210072 enz enz
20210071 enz enz
20210070 enz enz
20210069 enz enz
20210068 enz enz

is het nog duidelijk......
 

Bijlagen

Ik snap het niet; zo te zien heb je de kopie al gemaakt want ik zie al 5 kopieën staan. Of moeten er nog eens 5 bij? En waar moeten die kopieën komen te staan?
 
Wat is de lol van 5 identieke gegevens in de 'tabel' ?
 
Ten eerste wat de lol eraan is.

Mij gaat het om de functie of dit mogelijk is zodat ik dit verder kan uitwerken.
En ja heel veel gegevens zijn inderdaad identiek in een regel behalve de nummering in kolom A en nog een paar dingen veranderen in een kolom.
Vandaar ik wil dat een copy gemaakt wordt van regel 11 en de nummering in kolom A moet opgehoogd worden, dan hoef ik alleen in de tabel even snel een kleine wijziging te doen.

Ik wil eigenlijk via bijv een popup menu het aantal copieen ingeven automatisch op nummeren en sorteren hierop zodat ik verder kan bouwen.
Hoop dat mijn idee nu duidelijk is.
 
zo?

Code:
Sub SjonR()
For i = Range("A" & Rows.Count).End(xlUp).Row To 11 Step -1
    Rows(i + 1).Resize(Range("B1") - 1).Insert
    Rows(i + 1).Resize(Range("B1") - 1).Value = Rows(i).Value
Next
End Sub
 
zo?

Sub SjonR()
For i = Range("A" & Rows.Count).End(xlUp).Row To 11 Step -1
Rows(i + 1).Resize(Range("B1") - 1).Insert
Rows(i + 1).Resize(Range("B1") - 1).Value = Rows(i).Value
Next
End Sub

Het begin is er, wat die doet is van alle regels vermeerderen met het aantal uit B1.
Dit is niet de bedoeling hij moet alleen regel 11 copieeren en dan het aantal wat in B1 staat.
en dan het liefst op nummeren, zodat de hoogste op regel 11 komt te staan.
 
Laatst bewerkt:
Code van SjonR iets aangepast zoals ik het bedoeld had.
Wat ik nog graag zou willen is dat het "Blokkade Nr:" in kolom A gelijk opgehoogd wordt naar het aantal regels wat bijgevoegd is.
Zodat uiteindelijk de volgorde weer OK is en de nieuwste bovenaan staat.

Code:
Sub SjonR()

'For i = Range("A" & Rows.Count).End(xlUp).Row To 11 Step -1

Rows(11).Select
Selection.Copy

     Rows(i + 12).Resize(Range("B1") - 0).Insert
'     Rows(i + 12).Resize(Range("B1") - 1).Value = Rows(i).Value
'Next
End Sub
 

Bijlagen

Dit lijkt mij een totaal overbodige tussenstap voor een resultaat dat je voor ons verborgen houdt.
 
Misschien even een voorbeeld bestand plaatsen met wat jouw startpunt is en ja je kan zomaar een 2e tab toevoegen waarin je het verwachte eindresultaat laat zien.

Als je geen hulp wil bieden dan ook geen vreemde insinuaties graag.
Mogelijk dat zo'n reactie komt door een niet helderdere vraagstelling?

iets - 0 = iets. Net als iets + 0 = iets
 
Jullie ervaren mensen moeten eens begrijpen dat de programmeertaal die voor jullie gesneden koek is en niet voor iedereen logisch is.
Geef dan fatsoenlijk een reactie en anders zeg gewoon niets met die domme cryptische antwoorden van je.
Ik ben hier om te leren en zeer dankbaar voor de hulp maar jou hulp heb ik niet meer nodig.
Als ik iets vraag is het alleen maar waar heb je dat voor nodig of dit en dat, i.p.v. mensen de goede weg op te helpen.
Ben klaar met jou.
 
Programmeertaal is juist altijd logisch.
Als jij een programmeertaal niet logisch 'vindt', wat betekent dat dan ?
 
Programmeertaal is juist altijd logisch.
Als jij een programmeertaal niet logisch 'vindt', wat betekent dat dan ?

Blijkbaar begrijp jij dat niet als ik het niet logisch vindt en zal het je nog 1 keer uitleggen.

Ik ben lerende om de taal te begrijpen en hoop via dit forum voortgeholpen te worden en niet te worden weggezet als een dom onwetend iemand.
Of erger nog iemand die dingen achterhoud.
Van de ervaren mensen zoals jij je voordoet mogen wel wat meer begrip tonen voor minder ervaren mensen ander moet je gewoon niet reageren.
Als dingen niet duidelijk zijn dan kun je dit ook anders vragen en niet van die domme antwoorden geven.
Dit is een forum om mensen te helpen toch maar schijnbaar schep jij meer genoegen in moeilijk doen om tot de kern te komen.
 
Lees eerst eens rustig al mijn antwoorden in dit forum door voordat je een oordeel geeft.
 
Beste HSV

Aantal regels wordt netjes ingevoegd zoals gewenst echter helaas stopt die met een fout.
Het omhoog nummeren gebeurt dan helaas "nog" niet.
De macro stopt op de positie schuin aangegeven.


Code:
Sub hsv()
Dim sv, sca As Object, i As Long
If Range("b1") > 0 Then
 With ActiveSheet.ListObjects(1).ListRows(1)
  sv = .Range.Formula
   .Range.Resize(Range("b1")).Insert , xlBelow
   .Range.Resize(Range("b1")).Formula = sv
[I][B]Set sca = CreateObject("System.Collections.ArrayList")[/B][/I]
      For i = Range("b1").Value To 1 Step -1
        sca.Add sv(1, 1) + i
      Next i
   .Range.Resize(Range("b1"), 1) = Application.Transpose(sca.toarray())
  End With
 End If
End Sub
 
Laatst bewerkt:
Dan moet je of: .Net FrameWork 3.0 installeren of deze proberen.

Code:
Sub hsv()
Dim sv, sca As Object, i As Long
If Range("b1") > 0 Then
 With ActiveSheet.ListObjects(1).ListRows(1)
  sv = .Range.Formula
   .Range.Resize(Range("b1")).Insert , xlBelow
   .Range.Resize(Range("b1")).Formula = sv
 Set sca = CreateObject("scripting.dictionary")
      For i = Range("b1").Value To 1 Step -1
        sca(i) = sv(1, 1) + i
      Next i
   .Range.Resize(Range("b1"), 1) = Application.Transpose(sca.items)
  End With
 End If
End Sub
 
Heb gekozen voor de laatste optie en deze doet precies wat ik voor ogen had.
Hartelijk dank voor je hulp en oplossing.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan