goedemorgen,
ik heb op dit forum gezocht en gekeken naar een macro die ik wil bouwen.
De werking zoals ik die bedacht had zie ik echter nog niet terugkomen
Ik heb een bestand bestaande uit een aantal tabbladen waar tabellen in staan
(in de kolom het art. nr. en in de rij het weeknummer).
Ik wil nu een macro bouwen die uit elk blad de regel met een specifiek artikelnummer
kopieert en in een nieuw blad zet.
Daarnaast zou hij dan de regel moeten beginnen met de bladnaam.
Kan dat, en zo ja hoe moet ik beginnen??
Gr. Richard
Plaats eens een voorbeeldbestandje met enkel werkbladen en wat gegevens zodat we een idee krijgen van je opzet.
Mvg,
Rudi
Er zijn geen domme vragen, enkel domme antwoorden
Bijgevoegd het basisbestandje (in een zip)
Het is de bedoeling dat er op het blad "totaal" een knop komt om te zoeken.
Als de gebruiker hierop klikt moet er een invoerveld komen waar een artikelnummer moet worden ingevoerd.
Vervolgens moet de macro een nieuw bestand maken waar hij van elk project de regel die begint met
het artikelnummer neerzet
(dus bv: in inputbox ingevoerd "1002" geeft een bestandje met de naam "datum vandaag 1002"
waarin onder elkaar alle artikelen 1002 staan (hele regels) en waarin in de eerste kolom de projectnummers
zijn toegevoegd)
ik hoop dat dat kan en lukt :$
voorraadbeheer forum.zip
Zorg er wel voor dat Projecten, Totaal, basis en blanco de eerste vier werkbladen zijn in je bestand.Code:Sub zoeken_nummer() Sheets.Add , Sheets(Sheets.Count) Sheets(Sheets.Count).Name = "Temp" ArtNr = InputBox("Geef het te zoeken artikelnr op.", "Artikelnummer:") On Error Resume Next For i = 5 To Sheets.Count - 1 With Sheets(i) fRow = .Columns(1).Find(ArtNr, , xlValues, xlWhole).Row .Cells(fRow, 1).Resize(, 57).Copy Sheets("Temp").Range("B" & Rows.Count).End(xlUp).Offset(1) Sheets("Temp").Range("A" & Rows.Count).End(xlUp).Offset(1) = .Name End With Next fName = Format(Date, "dd-mm-yyyy") & "_" & ArtNr Sheets("Temp").Copy With ActiveWorkbook .SaveAs "G:\" & fName & ".xlsx", 51 .Close True End With Application.DisplayAlerts = False Sheets("Temp").Delete Application.DisplayAlerts = True End Sub
Mvg,
Rudi
Er zijn geen domme vragen, enkel domme antwoorden
super, ik ga hem gelijk proberen
wat ik wel zie is dat je hem wegschrijft als xlsx, maar neem aan dat dat ook als xls kan?
(was vergeten te vertellen dat we met xl 2003 werken :$)
edit: dat werkt inderdaad
wat hij nu doet is dat hij de namen van de bladen in een lijst zet waar het artikel voorkomt,
kan ik daarachter ook een kopie zetten van de rij waarin het artikelnummer staat?
edit2: na wat juiste instellingen in excel doen, en ook daadwerkelijk opslaan, werkt het![]()
super bedankt, voor nu is deze vraag opgelost
Laatst aangepast door xyntarsus : 6 juli 2012 om 09:43
ik weet dat het een vullende vraag is en misschien niet in dit draadje thuis hoort maar nog het volgende:
in het zelfde bestand heb ik een userform aangemaakt waarmee ik beginweek en looptijd van een project kan aangeven.
Nu wil in graag in de eerste kolom na de artikelnaam het aantal benodigde artikelen invullen, en dan automatisch
(na het drukken op een "update" knop) de gegevens in de juiste weken invullen.
zoiets als:
voor elke (start -1) < week < (einde +1) kopieer Range("ingevulde gegevens")
ps: het -1 en +1 heb ik gebruikt omdat ik niet wist hoe ik groter / kleiner of gelijk moest aangeven
Kan iemand me weer verder op weg helpen??
Post eens een voorbeeldbestandje met je userform en maak adhv een voorbeeld duidelijk wat je wil bereiken.
Mvg,
Rudi
Er zijn geen domme vragen, enkel domme antwoorden
in het user form (via de knop "nieuw blad maken") kan ik een beginweek en een looptijd invoeren.
In het betreffende nieuwe blad vul ik in de eerste kolom na de artikelnaam het aantal in dat de klant nodig heeft.
Wat ik nu graag zou willen is dat ik een knop hebt die de kolom met aantallen kopieert naar de weken beginnende met de startweek en eindigend met de eindweek.
Dit zodat ik de ingevulde gegevens niet steeds hoef te kopieren met de hand.
Op deze manier kan ik dan ook makkelijk updaten als de looptijd wijzigt.
de file:
voorraadbeheer forum2.zip
Volgende keer wel een voorbeeldbestand zonder wachtwoord op het VBA-project posten, kostte weer een paar minuten extra
Heb in blad Basis een macro gezet die meegekopieërd wordt naar nieuwe tabbladen. Maak eens een nieuw blad, vul wat aantallen in en draai de macro tst.
Laat eens weten of dit de bedoeling is.
Mvg,
Rudi
Er zijn geen domme vragen, enkel domme antwoorden
thx, was idd vergeten het ww eraf te halen.
de macro loopt vast op de eerste regel gelijk (scolumn...)
hij geeft de melding: objectvariabele With is niet ingesteld
Als ik de code verder zie lijkt dit wel de opzet te zijn die ik bedoel![]()
Test deze dan eens
Mvg,
Rudi
Er zijn geen domme vragen, enkel domme antwoorden
hij komt al verder, maat loopt nu vast in de if...then regel
hij geeft de melding:
fout 1004: Door de toepassing of object gedefinieerde fout
@xyntarsus
Muggeziften ('debugging') is de beste manier om VBA te leren.
Gebruik het forum voor suggesties, stel er een eer in die naar jouw situatie aan te passen en werkend te krijgen.
VBA voor smarties
Application.SheetsInNewWorkbook = 1
Vermijd Select en Activate in VBA-code
Gebruik in VBA-code With ... End With in plaats van objectvariabelen
@ snb:
via het debuggen kom je er inderdaad een heleboel over te weten, zo heb ik het tot nu toe ook gedaan.
lezen, suggesties gebruiken en aanpassen, en de code 'analyseren' als het mis gaat.
Alleen in dit geval zou ik niet weten wat er mis kan gaan
het lijkt me dat het allemaal gewoon klopt, maar toch doet hij het niet
ps: dit is mn eerste grotere vba project (zoals jullie waarschijnlijk wel gezien hebben)
dus tot een paar weken terug was alles nog nieuw voor me![]()
Geef eens een voorbeeld van een projectnummer dat je invoert (reeël voorbeeld)
Mvg,
Rudi
Er zijn geen domme vragen, enkel domme antwoorden
een projectnummer is altijd een nummer van 5 cijfers
(22345 zou een reeel voorbeeld zijn)
Gebruik je mijn voorbeeldbestand of pas je een eigen origineel aan?
Zoals je gemerkt hebt heb ik op blad Basis de opmaak van de weekgetallen gewijzigd in Standaard en niet meer Tekst.
Geef dus alle getallen in je userform in als integers (niet 01, 02, enz...) maar 1, 2, enz...
Mvg,
Rudi
Er zijn geen domme vragen, enkel domme antwoorden
super
hij doet het
maar even voor mijn leermomentje: dit lag er dus echt alleen aan dat het gegevenstype anders was?
(tekst ipv standaard)
idd
Mvg,
Rudi
Er zijn geen domme vragen, enkel domme antwoorden
en nog sorry voor de late reactie:
maar super bedankt voor de hulp![]()