macro voor celwaarde 1000 in range selecteren

Status
Niet open voor verdere reacties.

Wout88

Gebruiker
Lid geworden
8 jun 2004
Berichten
23
Hallo experts,

Ik ben op zoek naar een macro om in een bepaalde range ("g435:g2114") alle rijen met waarde 1000 te selecteren/activeren. boven al deze rijen moet een regel ingevoegd worden. vervolgens moet deze lege rij gevuld worden met een kopie van de regel daar weer boven. dan moet de waarde in kolom G van deze (nieuwe)rijen veranderd worden in "0900"

Het lijkt me dat hiervoor een relatief simpele oplossing moet zijn, echter ik heb hem nog niet gevonden in 2 weken ploeteren.

Alvast bedankt!!!

Groeten van Wout...
 
Hai, :D

Jammer dat je niet verteld over welk programma het gaat. (Vermoed Excel)

Plaats even een Excelvoorbeeld met daarin wat data en uitleg van hoe het er van te voren uitziet en hoe het eruit moet komen te zien..want zo vat ik hem niet....

En tja...makkelijk is een relatief begrip...;)
 
Makkelijk is inderdaad zeer relatief...

Hallo Joost,

Het gaat idd om Excel. Excuus voor de wazige omschrijving.

Ik heb even een voorbeeldje gemaakt omdat het hele bestand kopieren geen optie leek (+/- 2600 rijen)

Hoop dat het een beetje duidelijk is....

Alvast hartelijk dank voor je snelle reactie!:thumb:

Groeten, Wout

P.S. Hoop dat die zipfile het doet...(geen ervaring)
 

Bijlagen

Hai, :D

Heb de file binnengehaalt en even bekeken.

Moet eerlijk zeggen dat ik jou geschreven logica nog niet snap. (maar goed ik doe ook niet hetzelfde werk als jij)

Ga even verder met de rest van de vragen en zal straks nog eens lezen en eventueel opheldering vragen..

Je hoort het nog. :thumb:
 
Hai Wout, :D

Het spijt mij zeer maar ik weet echt niet wat ik voor je moet programeren? :(

Het verhaal wordt mij gewoon niet duidelijk....

Dus als er iemand is die het verhaal wel snapt..help Wout dan ff-kes...:thumb:
 
Hai Joost,

Ik zal proberen het probleem wat uitgebreider proberen uit te leggen.

In het excel werkblad staan allemaal snijmachines (om rollen papier/folie mee af te scheuren/snijden) met een eigen artikelcode. Deze artikelcode is opgebouwd uit:
-het type frame(eerste 3 cijfers uit de code)
-het aantal rollen dat in het frame past(5e cijfer van links)
-de roldiameter van de rol(len) (5e,6e,7e cijfer van links)
-de breedte van de rol(len)in millimeters (8e,9e,10e,11e cijfer van links)
het 12e cijfer is voor unit 1 (bij 1/2/3 rol frames)
het 13e cijfer is voor unit 2 (bij 2 of 3 rollen frames)
het 14e cijfer is voor unit 3 ( alleen bij 3 rollen frames)
-de laatste 4 cijfers zijn voor de accessoires
bijv. 0010= voetsteunen voor het frame
bijv.0020= wandsteunen voor het frame
etc.


Het is nu de bedoeling dat voor bepaalde apparaten een breedte 0900 erbij komt (tussengevoegd)
De range waarin die apparaten staan is G435:G2114
De macro moet dus in deze range in kolom G,tussen de waardes 0800 en 1000 de waarde 0900 zetten.
De rest van de nieuwe rij kan gevuld worden met de formules uit de rij van breedte 0800.
Omdat het gaat om +/- 1700 rijen leek het mij handig om hier een macro voor te verzinnen.

Ik hoop dat het wat duidelijker is zo, ik zal nog een plaatje van een apparaat bijvoegen om een beeld te kunnen vormen.

Groeten van Wout:)
 

Bijlagen

  • voorbeeld snijapparaat.jpg
    voorbeeld snijapparaat.jpg
    9 KB · Weergaven: 32
Hai Wout, :D

Nou ik denk dat ik nu wel snap wat je bedoeld.

Je wilt:
* Controleren in alle waarden in kolom G
* Controleren of een waarde 1000 is en de voorgaande waarde dus niet 900 (Zo kun je hem vaker uitvoeren)
* Als er een waarde 1000 gevonden wordt wil je een regel invoegen welke een zelfde is als de voorgaande regel en hierin wil je dus de waarde 900 in kolom G

Ik heb voor het gemak een kopieerrij toegevoegd (Rij 2) welke ik gebruik om in te voegen wanneer een waarde gevonden is van 1000 en de voorgaande rij nog niet 900 is...

Test het document even en vertel of ik het goed heb begrepen! :p

See Yah! :thumb:
Ps..de KRINGVERWIJZINGEN mag je lekker zelf uit je document halen...
 

Bijlagen

Hai Joost,

Alvast bedankt voor de snelle reactie!
Ben er even mee bezig geweest, maar in die kopieerrij staan niet de juiste gegevens voor alle rijen.
In kolom G staan alle breedtes die bij een bepaald type horen.
Heb de regel "Selection.FillDown" toegevoegd aan jou macro en die kopieerrij weggehaald.dat werkt goed. Heb nu alleen het probleem dat er in elke serie breedtes 2x de breedte 0800 staat, waarvan de onderste dus veranderd moet worden in 0900.
Misschien weet jij hier de oplossing voor??

Nogmaals dank! Ben al een stuk verder dankzij jou:thumb:

Groeten van Wout!
 
hai Joost,

Sub InsertRows900()
Dim iCnt As Integer
Dim iGrow As Integer

Application.ScreenUpdating = False

For iCnt = 6 To ActiveSheet.Range("G" & Rows.Count).End(xlUp).Row & iGrow
If Cells(iCnt, "G").Value = 1000 And Cells(iCnt, "G").Offset(-1, 0).Value <> 900 Then
Rows(2).Select
Selection.Copy
Rows(iCnt).Select
Selection.Insert shift:=xlDown
Selection.FillDown
iCnt = iCnt + 1
iGrow = iGrow + 1
End If
Next iCnt

Application.CutCopyMode = False
End Sub

Hij moet nu dus alleen de (gekopieerde)waarde 0800 in kolom G veranderen in 0900...
De formules blijven de gekopieerde waarden

Dan is ie helemaal perfect!

Werderom bedankt!

Groeten van Wout:thumb:
 
Hai Wout, :D

Ik zie nu ook pas net dat jij tekst in de celeigenschappen hebt staan bij 0900 en 1000 etc...

Dus dat heb ik ook even aangepast in de code..

Dit zou hem moeten zijn:
Code:
Sub InsertRows900()
Dim iCnt    As Integer
Dim iGrow   As Integer

Application.ScreenUpdating = False

 For iCnt = 6 To ActiveSheet.Range("G" & Rows.Count).End(xlUp).Row & iGrow
    If Cells(iCnt, "G").Value = "1000" And Cells(iCnt, "G").Offset(-1, 0).Value <> "0900" Then
        Rows(2).Select
        Selection.Copy
        Rows(iCnt).Select
        Selection.Insert shift:=xlDown
        Selection.FillDown
        Cells(iCnt, "G").Value = "0900"
        iCnt = iCnt + 1
        iGrow = iGrow + 1
    End If
 Next iCnt
 
Application.CutCopyMode = False
End Sub

See Yah! :thumb:
 
Hai Joost,

In mijn voorbeeldje werkt hij perfect!!!:thumb:

Is het ook mogelijk om de macro te laten werken in de range G435:G2114??

Hartelijk dank!

Groeten van Wout!
 
Hai, :D

Das mooi graag gedaan...

Zonder te testen zou ik zeggen pas de For regel aan:
Code:
 For iCnt = 435 To 2114 & iGrow

See Yah! :thumb:
 
Hai Joost,

Sorry voor de late reactie(was vorige week in Istanbul met school(alles was slecht behalve het bier, zeg maar...)).

Ik heb em weer ffies geprobeerd maar ik heb de indruk dat hij vanaf rij 435 alles naar onderaan doet. Dit geeft op zich niet, want bij alle rijen met verkeerde machines geeft hij geen prijs. Als we die er dus uit kunnen gooien op de een of andere manier is het ook goed. (De prijzen staan in kolom "AG")

Dan ben ik nog op een probleempje gestuit..
Het is namelijk zo dat in kolom "AK" een volgnummer staat wat nodig is om een EAN code te vormen. Nu we die rijen ertussen hebben geschoven klopt die doornummering niet meer, want daar staan nu bij de ingevoegde rijen dubbele waarden. De bedoeling is dat de doornummering van de nieuwe rijen verder telt vanaf de laatste niet ingevoegde rij:eek:
Ik heb uiteraard al zitten stoeien met deze uitdaging en ben tot de conclusie dat er volgens mij
:confused: 2 mogelijkheden zijn:
1: alle in te voegen rijen worden naar onder de laatste rij geplakt en we laten de nummering in kolom "AK"doorlopen
2: In jou macro voegen we een regel toe die de hoogste waarde zoekt in kolom "AK" en daar 1 bij optelt en invult in de nieuwe rij in kolom "AK" (iets met de MAX functie in excel of zo???)

Mijn welgemeende excuses dat ik zoveel vraag, maar ik heb de indruk dat het nog lang zal duren voordat ik de status professional zal mogen dragen

Alvast weer mijn hartelijke dank!!! Alle hulp is welkom!:thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan