• 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.

Dubbele jaartallen updaten in Excel (evt. m.b.v. vba of een macro?)

Status
Niet open voor verdere reacties.

lottepost

Gebruiker
Lid geworden
10 feb 2019
Berichten
12
Ik wil in Excel de namen van de tabbladen 2018-2019, 2019-2020 etc. noemen. Deze moeten echter elk jaar geüpdatet worden, maar dit is nogal een klus om met de hand te doen. Ik vroeg me daarom af of dit automatisch kan. Tot nu toe heb ik het volgende geprobeerd.

Ik heb de namen van de tabbladen gekoppeld aan cel A1 in het corresponderende tabblad m.b.v. een vba. Ik loop nu echter tegen twee dingen aan. Ten eerste lukt het me niet om een dubbel jaartal automatisch te updaten. Dus als in cel A1 van tabblad 1 2018-2019 staat dat cel A1 van tabblad 2 automatisch 2019-2020 wordt (met behulp van een formule o.i.d.). Daarom heb ik de tabbladen voor alsnog 2018, 2019 etc. genoemd.

Dan loop ik alleen ook nog tegen het volgende aan. In eerste instantie staat in cel A1 van tabblad 1 2018 en heet dat tabblad dus ook zo en staat in cel A1 van tabblad 2 2019 etc. Als ik cel A1 van tabblad 1 naar 2019 verander, worden alle A1 cellen geüpdatet (dus in cel A1 van tabblad 2 wordt 2020 etc). Als ik dan met behulp van de macro de namen van de tabbladen ook wil updaten, gaat dat niet. Ik krijg dan een melding dat de naam 2019 al bestaat. Dit komt doordat tabblad 2 nog 2019 heet op het moment dat de naam van tabblad 1 wordt veranderd naar 2019.

Ik ben benieuwd of iemand mij kan helpen met deze dingen.

Alvast bedankt!
 
Als je een voorbeeld document plaatst zal iemand je vast kunnen helpen.
 
Hier een voorbeeld document met de macro die ik gebruik voor het veranderen van de namen van de tabbladen.
 

Bijlagen

  • Voorbeeld.xlsm
    15,6 KB · Weergaven: 24
Wat levert 2019-2020 meer aan informatie op dan 2019 ?
 
Laatst bewerkt:
Met deze code kun je alle mogelijke varianten van wel of geen waarde of een fout in A1 afvangen
Code:
Sub VeranderTabbladNaam()
Dim objSheet As Worksheet

For Each objSheet In ActiveWorkbook.Sheets
  If Not IsEmpty(objSheet.Range("A1").Value) And Not IsError(objSheet.Range("A1").Value) Then
    If IsNumeric(objSheet.Range("A1").Value) Then
        objSheet.Name = objSheet.Range("A1").Value & "-" & objSheet.Range("A1").Value + 1
    Else
        objSheet.Name = objSheet.Range("A1").Value
    End If
  Else
    objSheet.Name = objSheet.CodeName
  End If
Next

End Sub
 
Super, dat werkt inderdaad! Ik krijg nu alleen nog wel een error als ik A1 in tabblad 1 naar 2019 verander, omdat er dan dus even twee tabbladen met dezelfde naam zijn. Nu zou je bijvoorbeeld eerst A1 naar 2000 moeten veranderen en dan pas naar 2019. Is hier ook nog een oplossing voor?
 
ai, toch nog een optie gemist.

afijn.. het zal toch niet om honderden bladen gaan dus dan maar even "quick and dirty" een extra loopje erin die eerst de namen weghaalt en dan opnieuw opbouwt.
Code:
Sub VeranderTabbladNaam()
Dim objSheet As Worksheet

Application.ScreenUpdating = False
For Each objSheet In ActiveWorkbook.Sheets
    objSheet.Name = objSheet.CodeName
Next

For Each objSheet In ActiveWorkbook.Sheets
  If Not IsEmpty(objSheet.Range("A1").Value) And Not IsError(objSheet.Range("A1").Value) Then
    If IsNumeric(objSheet.Range("A1").Value) Then
        objSheet.Name = objSheet.Range("A1").Value & "-" & objSheet.Range("A1").Value + 1
    Else
        objSheet.Name = objSheet.Range("A1").Value
    End If
  Else
    objSheet.Name = objSheet.CodeName
  End If
Next

End Sub
 
Laatst bewerkt:
Dank je wel! Het werkt nu allemaal zoals ik wil :) En ik heb inderdaad ook tabbladen die niet van naam veranderen. Die had ik tot nu toe ook gewoon in A1 gezet, maar jouw optie is ook erg fijn om te weten!
 
Laatst bewerkt door een moderator:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan