Ga naar inhoud

alpha

Lid
  • Items

    1.124
  • Registratiedatum

  • Laatst bezocht

Berichten die geplaatst zijn door alpha

  1. 2 uren geleden, Saltadoom zei:

    Indien cel E103 niet aan de voorwaarde voldoet, krijg ik in cel A103 "onwaar" in plaats van "Onwettelijk".

    E103 komt helemaal niet in je formule voor, dus daar kan de formule dan sowieso geen invloed op uitoefenen.

  2. 40 minuten geleden, Carembole60 zei:

    Jouw opmerking over een punt verwijderen vóór Range betreft de volgende regel ?

     If r.Text = "X" Then .Range(Cells(r.Row, 5), Cells(r.Row, 33)).ClearContents

    Mag ik ook vragen wat die punt juist wel of niet doet?

    NEE, dat is geen regel van mij. Het gaat om deze regel die ik hierboven plaatste:

    Do While IsDate(Range("f" & rij).Value)

    Ik heb de punt nu weggehaald, dus zo moet hij er uitzien. Die punt kan later worden teruggeplaatst als in de macro naar een blad word verwezen; die regel komt dan tussen 'With en End With'. Door die punt hoef je de naam van het blad niet te herhalen. Duik maar eens goed in de Excel-VBA-Helpfile, daar staat ALLES in, een boek heb je niet nodig. Maar voordat je aan vba begint moet je Excel zonder vba zeer goed beheersen (en dan vooral de functies), daar ontbreekt het bij velen aan. En als je met vba begint, kun je best met zeer eenvoudige dingen beginnen (dus niet met iets zoals hier, hoewel dat ook niet erg moeilijk is), anders komt er te veel ineens op je af. In de helpfile van Excel-vba vind je alle vba-mogelijkheden, vaak met eenvoudige voorbeelden erbij. 

    NB: Voordat je in de macro gaat kopiëren moet je eerst kijken of de cel, wat datum betreft, aan de voorwaarde voldoet. En als die daaraan voldoet, dan pas kopiëren.

  3. Ik dacht de vragensteller een korte opleiding te geven, maar dat heeft nu nog weinig zin als iemand met een complete oplossing komt. Toch Noyota, leert iemand meer door zelf dingen uit te zoeken (eventueel met aanwijzingen) dan door zonder meer complete oplossingen van anderen over te nemen. Ik zeg dit niet als kritiek, iedereen doet op dit forum wat hij of zij wil, en ik geef soms ook wel complete oplossingen.

    Overigens Noyota, vind ik je oplossing wel héél erg omslachtig door cel per cel in het tweede blad over te nemen. Dat kan veel sneller met een kopieeropdracht (1 coderegel). En cellen met een X vullen is ook helemaal niet nodig, je kunt het betreffende bereik eenvoudig met 1 coderegel leegmaken zonder die X. De aanwijzingen voor zo'n oplossing staan in mijn bericht hierboven. Daarin moet overigens de punt vóór Range("f" & rij) verwijderd worden.

     

  4. 9 uren geleden, Carembole60 zei:

    als ik een cel in kolom E leeg laat wordt deze geel/oranje, zodra ik een datum invoer wordt deze wit/geen kleur

    Bekijk nog eens je bestand dat je hier op het forum plaatste, dan zul je zien dat dat niet het geval is, want in kolom E zit geen vw. opmaak (maar die kun je er wel in plaatsen natuurlijk).

    Quote

    Zodra je begint met do-while enz ben ik het kwijt...

    Heb je die opdracht (en de andere die ik vermeldde) al bestudeerd in de helpfile van Excel?

    Ik schreef: doorloop kolom F om te kijken of er datums zijn die aan de voorwaarde (datum kleiner of gelijk aan huidige datum) voldoen. In jouw geval moet dus F2 t/m F4 doorlopen worden. Dat het t/m F4 is, dat weet Excel alleen als je dat vooraf vastlegt (door de laatste rij met gegevens te bepalen, maar om het eenvoudig te houden laat ik dat hier achterwege). Je kunt ook kolom F doorlopen totdat er geen datum meer in staat (dat is geen sluitende oplossing als er rijen zijn zonder datum in kolom F, maar daar is een mouw aan te passen). De rijen met datums in kolom F doorlopen kan dan bv. zo:

    sub test()
    rij = 2
    'Doe zo lang er een datum in de cel ("F" & rij) staat
    Do While IsDate(.Range("f" & rij).Value)
    'Hier moet komen: Als de celwaarde kleiner of gelijk is aan de huidige datum,
    'kopieer dan de kolommen A t/m AF naar het tweede blad en wis in het eerste blad
    'de kolommen E t/m AF. Probeer dat zelf.
    rij = rij + 1
    Loop
    End Sub

     

  5. 5 uren geleden, Carembole60 zei:

    De data in kolommen E, F, W en AB t/m AF hebben een voorwaardelijke opmaak

    In kolom E zie ik geen vw. opmaak en in de kolommen waarin wel vw. opmaak staat is die niet juist. 

    Voorbeeld: in F2 geef jij als vw. opmaak: =F2:F4<(vandaag()+60). Dat kan niet, vóór het kleiner-dan-teken mag slechts 1 cel staan. Je moet dit bij álle cellen wijzigen waarin je vw. opmaak hebt ingesteld. En als een cel waarin een datum kan komen ook leeg kan zijn, dan moet je in de vw. opmaak ook het leeg zijn van die cel(len) opnemen.
    In je bestand zie ik dat je macro's uit een boek van Wim de Groot hebt overgenomen, dat is uiteraard prima. Ik heb zelf dat boek niet (ik heb mijn handen vol aan de helpfile van Excel), maar ik heb zojuist op internet de inhoudsopgave van dat boek bekeken en dan denk ik toch dat je de vraag die je hier stelt zou moeten kunnen oplossen, het gaat nl. om basisvaardigheden. Ik zal aangeven hoe je je probleem kunt aanpakken.
    1. Doorloop in het eerste blad kolom F vanaf rij 2 tot zover er gegevens in de F-kolom staan. Dat kan bv. met een for-next-opdracht, maar ook met Do-While, Do-Until, While-Wend. 
    2. Controleer bij elke datum die in kolom F wordt gevonden of die kleiner of gelijk is aan de huidige datum; dat kan met If...Then. Is aan de voorwaarde voldaan, kopieer dan (met Copy...) van die rij de kolommen A t/m AF (de gehele rij mag ook) naar de eerste lege rij van het tweede blad (dat is rij 2). De volgende keer dat je kopieert moet dat uiteraard rij 3 zijn, dus je gebruikt een variabele die je vóór elke kopieeropdracht met 1 ophoogt.
    3. Tot slot moet je dan in het eerste blad van de gekopieerde rij de inhoud van de kolommen E:AF wissen.
    Dat is alles, dus zeer weinig opdrachten. Als je de code in ThisWorkbook plaatst tussen  Private Sub Workbook_Open()  en  End Sub ), dan wordt telkens als je het bestand opent gecontroleerd of er een rij aan de voorwaarde voldoet en die rij wordt dan meteen gekopieerd. Natuurlijk wordt dan ook automatisch jouw sorteermacro in het eerste blad uitgevoerd omdat er door te kopiëren in kolom K wat gewijzigd is. Door het wissen van de kolommen E:AF in 1 of meer rijen zul je zien dat de vw. opmaak ook in lege cellen zijn werk doet, vandaar mijn opmerking hierboven om daar wat aan te doen.
    Succes ermee!
     

  6. Je moet in het venster "Apps en onderdelen" aan de linkerkant "Standaard-apps" kiezen.

    Dan scroll je aan de rechterkant naar beneden, naar "Webbrowser", en daar kies je (tijdelijk) een andere browser (als je die op je computer hebt staan uiteraard). Het is niet zeker dat dan je probleem is opgelost, maar het zóu kunnen...

  7. Aanvulling op bericht van stegisoft:

    het kan soms helpen om 'even' te wisselen van standaardbrowser.

    Kies Start - Instellingen - Apps - Standaard-apps (je krijgt dan het venster dat stegisoft hierboven laat zien), en kies bij webbrowser tijdelijk een andere browser. De melding van 'annulatie wegens systeembeperkingen' verschijnt nl. nogal eens na installatie van de browser 'Google Chrome'. 

  8. Dat kan met een kleine macro, bv. op deze manier:

    - Kopieer onderstaande code.

    - Druk ALT-F11 (=Alt-toets ingedrukt houden terwijl je op F11 drukt).

    - Druk in de rechterkolom op de rechtermuisknop en kies "Plakken".

    - Plaats de cursor op een willekeurige plaats in de macro en klik bovenaan in het menu op het groene pijltje-naar-rechts (je kunt ook een knop in bv. blad1 plaatsen waarmee je de macro uitvoert).

    De macro beveiligt alle bladen. Wil je nu bv. alleen de bladen 2 t/m 5 beveiligen, dan wijzig je de regel For x = 1 To Worksheets.Count  in: For x = 2 to 5  .

    Sub beveilig()
    Dim x As Integer
    For x = 1 To Worksheets.Count
    Worksheets(x).Protect Password:="Evelien83"
    Next x
    End Sub

     

  9. @vuberke,

    Als je elders dezelfde vraag plaatst, dan wordt je geacht daarvan mededeling te doen op het forum waar je je vraag eerder plaatste, zodat mensen die je vraag proberen te beantwoorden geen nodeloos werk doen. Dat is gewoon "een regel die in het maatschappelijk verkeer betaamt" (= een algemene regel van fatsoen) die iedereen wordt geacht te kennen (bedenk hoe je het zelf zou vinden als je lang aan een antwoord op een vraag zou hebben gewerkt, als je er nadien achter komt dat dezelfde vragensteller de vraag ook elders heeft geplaatst en als die daar is beantwoord).
    Dit forum zegt hierover in zijn forumregels (citaat):

    Indien onze medewerkers vaststellen dat een vraag op meerdere fora is gepost, kan uw vraag tijdelijk en/of definitief "on hold" worden gezet. Dubbel werk voor onze "vrijwilligers" en bovendien kunnen verschillende adviezen elkaar doorkruisen. Geen goede methode om een probleem op te lossen. Onze medewerkers zullen u van deze tijdelijke en/of definitieve blokkering op de hoogte stellen. (einde citaat).

    Voor de duidelijkheid: bovenstaande schrijf ik op eigen titel, want ik ben hier geen moderator en ben niet bij de organisatie van dit forum betrokken.

     

    Om terug te komen op je vraag hier: als je de nodige tijd had genomen en goed had bestudeerd wat in dit topic als reactie op je vraag is geschreven, dan had je zelf je probleem verder kunnen oplossen (de aanwijzingen waren duidelijk, je hoefde bijna alleen maar te kopiëren). Onthoud: Excel leer je niet door klakkeloos oplossingen van anderen te kopiëren, maar door er zelf langdurig mee bezig te zijn. Die tijd moet je ervoor nemen.

    De website "gratiscursus.be" is inderdaad niet meer bereikbaar, de reden weet ik niet.

  10. "Buiten de gegevensvalidatie om" schreef ik, dus NIET vba en gegevensvalidatie samen, 1 van de 2 !

    Als je "met de persoon die al aangeduid is" de naam in de B-kolom bedoelt, dan kun je die in VBA opnemen met bv. range("B17").value. Maar als je het venster van gegevenvalidatie weglaat, dan moet je in vba ook de controle op meer dan 1x 'lak' en 'snel' opnemen, dus veel meer werk. Als ik jou was zou ik gegevensvalidatie niet laten vallen.

  11. In de tekst bij gegevenvalidatie kan dat niet.

    Dat is een standaardvenster. 'ingebouwd' in Excel.

    Het kan wel buiten de gegevensvalidatie om, maar dan moet je uiteraard een beroep doen op vba.

  12. 18 minuten geleden, Ron001 zei:

    Waar kan ik de foutmelding/foutmeldingstekst aanpassen?

    Zoals ik al schreef: in het menu bij gegevensvalidatie.

    Heb je dat n.a.v. mijn vorige berichten niet bekeken/bestudeerd?

    Kan ook de loonnummer terug komen te staan wanneer men verandert van "snel/lak"?

    Niet zonder meer. Als je dat wil, zou je naast die nummers een hulpkolom (die je verbergt) kunnen invoegen en waarin je de loonnummers blijvend opslaat. Om zo'n nummer dan snel terug te plaatsen in de A-kolom heb je toch weer vba nodig.

  13. Misschien wil je dit:

    Sub macro1()
    Dim mijnwaarde As Integer, mijncel As String
    mijnwaarde = InputBox("Welke waarde (bv. 3)?")
    mijncel = InputBox("Welke cel (bv. K70)?")
    Sheets("Lijst").Range(mijncel) = mijnwaarde
    End Sub

    Daar horen eigenlijk ook nog opdrachten bij om te controleren of wel gegevens worden ingevoerd overeenkomstig de vraag en ook voor wat er moet gebeuren als daaraan niet is voldaan.
     

  14. Quote

    Kan dit zonder VBA te gebruiken

    Ja:

    - Selecteer en kopieer in CN_FILE2017.xls de bewuste cellen
    - Open CN_FILE2018.xls, selecteer en plak de gekopieerde cellen in de geselecteerde cellen van CN_FILE2018.xls
     

    Als je wil kopiëren door het klikken op een knop, dan zit achter die code altijd vba om de kopieeropdracht uit te voeren.

    Quote

    welk is de formule om data van CN_FILE2017.xls sheet2 cel b3 te kopiëren naar CN_FILE2018.xls sheet2 cel B3

    locatie = s:/eenmanszaak/CN/CN_BELASTINGEN/CN_2017/CN_FILE2017.xls

    Ook hiervoor geldt dat dat in Excel niet kan met een formule in een werkblad, wel m.b.v. vba.

     

  15. Het doel van je exercitie is mij niet duidelijk met al dat geswitch tussen variabelen.

    Zonder een bestand met gegevens is het ook moeilijk oordelen.

    Wel te zeggen is dat twee zaken niet kloppen: je declareert zowel fcelwaarde1 als faanmelding1 als string en vervolgens wil je ze als range gebruiken. Dat kan natuurlijk niet.

×
×
  • Nieuwe aanmaken...

Belangrijke informatie

We hebben cookies geplaatst op je toestel om deze website voor jou beter te kunnen maken. Je kunt de cookie instellingen aanpassen, anders gaan we er van uit dat het goed is om verder te gaan.