Helpmij.nl
Helpmij.nl
Helpmij.nl
Steun Helpmij.nl! Klik hier     Computerprobleem? Klik hier!

Quote

Weergeven resultaten 1 tot 9 van 9

Onderwerp: vba: refereren naar zojuist aangemaakt tabblad

  1. #1
    Junior Member
    Geregistreerd
    14 februari 2020
    Vraag is opgelost

    vba: refereren naar zojuist aangemaakt tabblad

    Hallo allen,

    Ik heb een macro geschreven die na het starten van die macro een nieuw tabblad aan maakt.
    Het tabblad krijgt de naam van de opgevoerde datum in de inputbox.
    Het tabblad wordt dan vervolgens aangevuld met gegevens (automatisch en handmatig).

    Mijn vraag is:
    Ik heb een overzichtstabblad waarbij ik bepaalde gegevens van dit zojuist aangemaakte tabblad in wil opnemen.
    Ik wil hiervoor de verticaal zoeken formule gebruiken, maar dan krijg ik te veel foutmeldingen voor de data in de toekomst (die tabbladen bestaan immers nog niet).
    Kunnen jullie mij hierbij helpen?

    Alvast bedankt.





    Sub nieuw_tabbladd()
    'Met deze macro wordt er een nieuw basistabblad aangemaakt om gegevens in te vullen.

    Dim Datum_tabblad As Date

    'Datum bepalen van het nieuwe tabblad
    Datum_tabblad = InputBox("Voor welke datum wilt u een nieuw tabblad toevoegen?")

    'Kopie van tabblad Sjabloon maken en die de naam geven van de eerder ingevulde datum.
    Sheets("Sjabloon").Select
    Sheets("Sjabloon").Copy After:=Sheets(4)
    Sheets("Sjabloon (2)").Select
    Sheets("Sjabloon (2)").Name = Datum_tabblad

    Range("A1").Value = Datum_tabblad

    End Sub

  2. #2
    Tera Honourable Senior Member edmoor's avatar
    Geregistreerd
    8 september 2000
    Locatie
    Zuid-Holland
    Zo:
    Code:
    Sub nieuw_tabbladd()
        'Met deze macro wordt er een nieuw basistabblad aangemaakt om gegevens in te vullen.
        
        Dim Datum_tabblad As Date
        
        'Datum bepalen van het nieuwe tabblad
        Datum_tabblad = InputBox("Voor welke datum wilt u een nieuw tabblad toevoegen?")
        
        'Kopie van tabblad Sjabloon maken en die de naam geven van de eerder ingevulde datum.
        Sheets("Sjabloon").Copy After:=Sheets(Sheets.Count)
        ActiveSheet.Name = Datum_tabblad
        Range("A1").Value = Datum_tabblad
    End Sub
    Denk eraan dat dat je verder geen enkele controle doet op het reeds bestaan van het aan te maken blad en juiste en maximale lengte van naamgeving.
    En ook niet of de ingegeven waarde wel een (geldige) datum is.
    Laatst aangepast door edmoor : 14 februari 2020 om 18:09
    "It's hardware that makes a machine fast. It's software that makes a fast machine slow. "
    Op rechtstreekse vragen via email of privébericht reageer ik niet. Daar is het forum voor.
    Lees ook: http://www.helpmij.nl/forum/announcement.php?f=5

  3. #3
    Giga Senior Haije's avatar
    Geregistreerd
    24 maart 2009
    Locatie
    Oldenzaal
    Afstand tot server
    ±97 km
    Ik wil hiervoor de verticaal zoeken formule gebruiken, maar dan krijg ik te veel foutmeldingen voor de data in de toekomst (die tabbladen bestaan immers nog niet).
    Kunnen jullie mij hierbij helpen?
    en hoe ziet die formule er uit?
    Haije
    ___________________________________________________

  4. #4
    Giga Honourable Senior Member
    Geregistreerd
    2 maart 2013
    Waarom per datum een nieuw tablad? Is totaal onnodig en kost veel moeite om uiteindelijk de gegevens weer te verzamelen in 1 tabblad.
    Je kan een paard naar het water leiden, maar je kan het niet dwingen te drinken.

  5. #5
    Junior Member
    Geregistreerd
    14 februari 2020
    Elke dag krijg ik nieuwe data die ik in een los tabblad op sla ter naslagwerk en waar ik wat andere formules + vba op los gooi.
    Dat is namelijk ook data die ik moet delen met een aantal personen.
    Vandaar ook mijn macro die ik had geschreven voor het aanmaken van een nieuw tabblad.

    In het tabblad per dag staan gegevens per medewerker en om later in één opslag te kunnen zien hoe het met die medewerker gaat (voortgang) wil ik de data uit de verschillende tabbladen ophalen met verticaal zoeken.
    Zie in de print screen (i.v.m. privacy van de namen) hoe ik graag wil dat dat overzichts tabblad eruit komt te zien.
    Ik gebruik nu de formule: =VERT.ZOEKEN($B$1;'03-02-2020'!$A:$G;2;ONWAAR).
    Daarbij haal ik de gegevens uit het tabblad van 3 februari en dit lukt ook prima.
    Dat tabblad bestaat immers ook al, maar het tabblad van bijvoorbeeld 20 februari bestaat nog niet en daar loop ik op vast.
    Hoe kan ik de formule koppelen met de 'nu nog niet bestaande' bestaande tabbladen?

    Ik probeerde het met tekst samenvoegen om te refereren naar het tabblad wat nog niet bestaat. Maar die formule werkt niet (op cel A4 staat de datum van 3 februari).
    =VERT.ZOEKEN($B$1;TEKST.SAMENV("'";TEKST(A4;"dd-mm-jjjj");"'!$A:$G");2;ONWAAR)
    Ik weet nu niet hoe ik dit wel kan doen. Moet ik dit in vba doen of juist in excel? Ik loop vast.

    Alvast bedankt.
    Bijgevoegde kleine afbeeldingen Bijgevoegde kleine afbeeldingen Klik op afbeelding voor grotere versie

Naam:  overzicht per medewerker.JPG‎
Bekeken: 4
Grootte:  55,1 KB  

  6. #6
    Gebruik de functie INDIRECT (lees de help daarover). Overigens ben ik het helemaal eens met VenA, een tabblad per datum is inefficient. ALs het om het overzicht gaat kan je ook 1 tabblad maken die je makkelijk filtert op bijvoorbeeld datum en/of personeelslid.
    Groetjes,

    Jan Karel Pieterse
    Excel MVP jkp-ads.com

  7. #7
    Giga Senior Haije's avatar
    Geregistreerd
    24 maart 2009
    Locatie
    Oldenzaal
    Afstand tot server
    ±97 km
    Als je het perse met VERT.ZOEKEN wilt doen kan het zo:
    Code:
    =ALS.FOUT(VERT.ZOEKEN($B$1;'03-02-2020'!$A:$G;2;ONWAAR);"")
    Maar denk eerst eens na over de opmerkingen van VenA en jkpieterse
    Haije
    ___________________________________________________

  8. #8
    Junior Member
    Geregistreerd
    14 februari 2020
    Bedankt voor jullie tips.

    Indirect functie kende ik niet. Nu wel .

    Ik ben eruit gekomen. En ik snap wat VenA en jkpieterse bedoelen, maar helaas is dit voor nu de beste optie.

    Code:
    =ALS.FOUT(VERT.ZOEKEN($B$2;INDIRECT("'"&TEKST(A60;"dd-mm-jjjj")&"'!$A:$G");2;ONWAAR);"")

  9. #9
    Giga Honourable Senior Member
    Geregistreerd
    2 maart 2013
    Elke dag krijg ik nieuwe data die ik in een los tabblad op sla ter naslagwerk en waar ik wat andere formules + vba op los gooi.
    Kan ook prima in 1 tabblad. Gewoon eronder plakken. Misschien even de formules formules en de code aanpassen en je hebt alles netjes bij elkaar staan. Een slechte opzet zeker in combinatie met de volatiele functie indirect gaat ervoor zorgen dat het een erg traag bestand wordt. Hele kolommen gebruiken in een formule is over het algemeen ook niet zo'n goed idee. Maar jij moet er mee werken
    Je kan een paard naar het water leiden, maar je kan het niet dwingen te drinken.

Berichtenregels

  • U mag geen nieuwe vragen starten.
  • U mag niet reageren op berichten.
  • U mag geen bijlagen versturen.
  • U mag uw berichten niet bewerken.
  •  
Helpmij.nl
Helpmij.nl

Helpmij.nl en business

Partners
Sponsoren