• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

vba: refereren naar zojuist aangemaakt tabblad

Status
Niet open voor verdere reacties.

Ruudho

Nieuwe gebruiker
Lid geworden
14 feb 2020
Berichten
4
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
 
Zo:
Code:
Sub nieuw_tabbladd()
    [COLOR="#008000"]'Met deze macro wordt er een nieuw basistabblad aangemaakt om gegevens in te vullen.[/COLOR]
    
    Dim Datum_tabblad As Date
    
    [COLOR="#008000"]'Datum bepalen van het nieuwe tabblad[/COLOR]
    Datum_tabblad = InputBox("Voor welke datum wilt u een nieuw tabblad toevoegen?")
    
    [COLOR="#008000"]'Kopie van tabblad Sjabloon maken en die de naam geven van de eerder ingevulde datum.[/COLOR]
    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 bewerkt:
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?
 
Waarom per datum een nieuw tablad? Is totaal onnodig en kost veel moeite om uiteindelijk de gegevens weer te verzamelen in 1 tabblad.
 
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.
 

Bijlagen

  • overzicht per medewerker.JPG
    overzicht per medewerker.JPG
    55,1 KB · Weergaven: 55
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.
 
Als je het perse met VERT.ZOEKEN wilt doen kan het zo:
Code:
=[COLOR="#FF0000"]ALS.FOUT([/COLOR]VERT.ZOEKEN($B$1;'03-02-2020'!$A:$G;2;ONWAAR)[COLOR="#FF0000"];"")[/COLOR]

Maar denk eerst eens na over de opmerkingen van VenA en jkpieterse
 
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);"")
 
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:d
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan