Vraag & Antwoord

Anders (software)

[Excel] Automatisch overnemen gegevens in tabblad maand

8 antwoorden
  • Ik heb (in Excel) een offerteregister waarin gegevens in het tabblad [totaal] worden bijgehouden. Hieruit worden meteen statistische gegevens gefilterd zoals het aantal offertes dat een order is geworden per agent. Nu kopieëren we steeds per maand dat de offerte is uitgebracht de gegevens naar een tabblad van de betreffende maand. Er moeten echter nog gegevens bijgehouden worden van sommige offertes, als ze bijvoorbeeld wel zijn uitgebreacht, maar nog nagebeld moeten worden, bevestiging onderweg is, etc. Nu moet dat dus in 2 tabbladen worden bijgehouden. Wat ik nu graag wil, is dat Excel door te kijken naar de kolom datum, automatisch alle rijen kopiëert naar het tabblad [januari] waarbij in de datumkolom de 1 van januari staat. Ik heb echter geen idee hoe, maar volgens mij moet dat wel mogelijk zijn. Kan iemand me hiermee helpen?
  • Dat is niet zo ingewikkeld, maar je moet je een beetje verdiepen in de VBA macro's. Ik zou het volgende doen: - geef de cellen waarin je gegevens staan een naam - stap door de range van de cellen en controleer of de kolom met de datum inderdaad een datum is - bepaal de maand in de datum - kopieer de regel naar het blad met de naam van de maand (die moeten bestaan, anders maak een nieuw blad Ik zal zien of ik even een voorbeeld kan maken. Fred
  • De volgende code is een eerste poging. De moet het aan je behoefte aanpassen. Met name moet bijgehouden worden waar je de informatie in de maand bladen plakt. Probeer het eerst maar eens. [code:1:14eb937e30]Sub kopieer() Dim r As Range, datum As Date, blad As String Dim i As Integer Dim ws, doelws As Worksheet Set ws = Worksheets("Sheet1") i = 1 For Each r In ws.Range("data") rij = r.Row kol = 1 If CellType(ws.Cells(rij, kol)) = "Date" Then datum = ws.Cells(rij, kol).Value ws.Rows(rij).Copy maand = Month(datum) blad = Trim(Str(maand)) On Error Resume Next Set doelws = Worksheets(blad) If doelws Is Nothing Then Set doelws = Worksheets.Add doelws.Name = blad End If i = i + 1 doelws.Select doelws.Rows(i).PasteSpecial xlPasteValues Set doelws = Nothing End If Next r End Sub Function CellType(C) ' Returns the cell type of the upper left ' cell in a range Application.Volatile Set C = C.Range("A1") Select Case True Case IsEmpty(C): CellType = "Blank" Case Application.IsText(C): CellType = "Text" Case Application.IsLogical(C): CellType = "Logical" Case Application.IsErr(C): CellType = "Error" Case IsDate(C): CellType = "Date" Case InStr(1, C.Text, ":") <> 0: CellType = "Time" Case IsNumeric(C): CellType = "Value" End Select End Function [/code:1:14eb937e30]
  • Bedankt. Ik moet je eerlijk bekennen dat ik geen kaas heb gegeten van macro's, dus ik heb nogal wat vragen. :) 1. Waar moet ik deze code neerzetten? 2. Werkt het altijd, of moet ik op een knop drukken om het uit te voeren? 3. Werkt het ook als het zoals bij ons op een gedeelde (bedrijfs)netwerkschijf staat? 4. Wat moet ik aanpassen zodat het voor iedere maand werkt?
  • Ik heb [url=http://forum.computertotaal.nl/phpBB2/viewtopic.php?t=168257] hier [/url] een stukje over macro's geschreven. Dit gaat dan wel over "Word" maar de werkwijze komt overeen (hoewel de code van macro's in word anders zijn dan in excel). Om code aan te passen, toetscombinatie: [alt] [F11] De eerste regel: Sub Kopier () geeft aan dat de macro "Kopier" heet Wat je kan doen is even een macro opnemen en vervolgens bovenstaande code in de zojuist opgenomen macro plakken (let op, eerste en laatste regel even weghalen). Experimenteer altijd in document waar het geen kwaad kan!
  • 1. Op de VBA editor met Alt F11. Via menu insert module (invoegen neem ik aan in NL versie) maak je een lege module. In het lege scherm dat ontstaat type je sub spatie naam en druk op enter. De code komt tussen de sub en de end sub. Na de end sub kun je weer een nieuwe sub(routine) maken. 2. De code werkt alleen als je die gekoppeld hebt aan b.v. een knop op je werkblad. Zorg dat de Visual Basic toolbar zichtbaar is (beeld, toolbars, visual basic). Klik op de command button en sleep met je muis een rechthoek op je werkblad. Selecteer deze knop. Als het goed is ben je in 'design mode'. Op je toolbar moet een knop met een teken driehoek staan. Met de rechtermuis krijg je een menu waarin moet staan "view code' of zoiets. Dan krijg je weer een wit scherm, waarin je de code kunt typen. type hier de naam van de sub die je eerst gemaakt hebt. Het kan zijn dat je eerst de modulenaam moet typen, gevolgd door een punt, dus: Module1.naam_sub. 3. De macro hoort te werken binnen een nettwerk, tenzij je standaard een Excel beveiliging hebt die macro's blokkeert. 4. De code die ik gemaakt had creeert voor elke maand een nieuw werkblad. Als je er niet uitkomt, kun je me een Excel bestand sturen met wat data?
  • Ik kom er niet uit, ik denk dat ik ergens toch iets fout doe ofzo :( Ik stuur je wel even een PB.
  • Nog even een afsluitend berichtje om te zeggen dat het helemaal gelukt is dankzij Violist46! Hij heeft de macro geschreven, ik heb vanwege persoonlijke voorkeuren nog e.e.a. aangepast en het werkt helemaal toppie. Dit scheelt ons de komende jaren heel veel werk! :D Bedankt!

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.