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

Aanpassing tabbladen.

Status
Niet open voor verdere reacties.
Beste HSV,

Sorry dat ik niet eerder heb kunnen reageren. Ik zit nu nogal in een vrij drukke week. In elk geval bedankt voor jou 2e hernieuwde versie.

Deze heb ik getest tot en met instellingsdatum: 27-12-2032.

De volgende fouten zijn naar voren gekomen in de volgende instellingsdatums.

31-12-2012
Fout: Tabblad: Maarten 53.

Dit moet zijn Week 53.......

31-12-2019
Fout: Tabblad: Maarten 53.
Dit moet zijn week 53.......

25-12-2023
Fout: Tabblad: Maarten 53.
Dit moet zijn week 53.......

1-1-2024
Fout: Tabblad: Maarten 53.
Dit moet zijn week 53......

31-12-2029
Fout: Tabblad: Maarten53.
Dit moet zijn week 53......

Zoals je ziet komt feitelijk dezelfde fout om de zoveel jaar naar voren en dan telkens in week 53 van het bewuste jaar. Rest van de instellingsdatums zijn goed. Verder heb ik niet getest, maar ongetwijfeld zullen bovenstaande fouten dan ook opkomen.

Heb jij enig idee waar dat aan kan liggen? Kan jij er iets mee? Is het een uitdaging?

Ik hoor het wel.

Met vriendelijke groet,


Maarten
 
Het komt doordat het blad al bestaat.
Nieuwe poging.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ws As Worksheet, y As Long, sq As String
 If Not Intersect(Target, Range("B38")) Is Nothing Then
y = 1
  For Each ws In Worksheets
   If WorksheetFunction.And(ws.Name <> "Instellingen", ws.Name <> "Jaar-totaal 2012") Then
    ws.Name = "Maarten " & y
      y = y + 1
    End If
 Next ws
    
y = 1
 For Each ws In Worksheets
  If WorksheetFunction.And(ws.Name <> "Instellingen", ws.Name <> "Jaar-totaal 2012") Then
    sq = sq & ws.Name & "|"
    On Error Resume Next
  ws.Name = "Week " & ws.Range("D2") & " " & CLng(Year(ws.Range("B40")))
If InStr(1, sq, ws.Name, vbTextCompare) > 0 Then
  ws.Name = "Week " & ws.Range("D2") & " " & CLng(Year(ws.Range("B40")) + 1)
    End If
   End If
 Next ws
End If
End Sub
 
Beste HSV,

Wederom bedankt.

Het ziet er nu veelbelovend uit. Ik ga diezelfde test weer doen en je hoort van mij.

Hoe maken jullie dit toch. Is dat slechts met muisknoppen te doen of schrijven jullie doe teksten allemaal zelf. Zo ja dan zou ik dat toch ook willen leren, maar gezien de complexheid... duurt dat denk ik wel even.

Groet,

Maarten
 
Graag gedaan Maarten,

Helaas is dit niet met een paar muisklikken gedaan.
Er wordt ongeveer net zo geschreven (met behulp van goede declaraties van variabelen, komt er tijdens het typen af en toe een lijstje waaruit je kan kiezen) met de toetsenbord zoals ik dit berichtje hier neer zet.
 
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ws As Worksheet, y As Long, sq As String
If Not Intersect(Target, Range("B38")) Is Nothing Then
y = 1
For Each ws In Worksheets
If WorksheetFunction.And(ws.Name <> "Instellingen", ws.Name <> "Jaar-totaal 2012") Then
ws.Name = "Instellen " & y
y = y + 1
End If
Next ws

y = 1
For Each ws In Worksheets
If WorksheetFunction.And(ws.Name <> "Instellingen", ws.Name <> "Jaar-totaal 2012") Then
sq = sq & ws.Name & "|"
On Error Resume Next
ws.Name = "Week " & ws.Range("D2") & " " & CLng(Year(ws.Range("B40")))
If InStr(1, sq, ws.Name, vbTextCompare) > 0 Then
ws.Name = "Week " & ws.Range("D2") & " " & CLng(Year(ws.Range("B40")) + 1)
End If
End If
Next ws
End If
End Sub



Beste HSV

Bovenstaande werkt perfect!! Geheel naar mijn zin als hoe ik het vroeg en bovenal hoe ik het WIL. Dit is dan ook DE oplossing voor mijn probleem.

Echter ik heb zelf door stomheid iets over het hoofd gezien.

Mijn worksheets jaartotalen blijven allemaal op het eind 2012 heten. Deze verandert dus nog niet met het jaar mee. Je voelt hem al zitten denk ik. Doordat ik gefocust was op het 1 heb ik het ander over het hoofd gezien.

Ik zal en dat geldt voor alle medewerkers van dit forum, leden etc. deze site zeker aanbevelen bij anderen als zij met een dergelijk iets zitten.

Ik ben voor meer dan 100% tevreden.

Groet, Maarten
 
Edit: Daar heb ik ook niets aan gedaan.
 
Laatst bewerkt:
Wat wil je dat ik er aan doe?
Je hebt een tabblad 'Totalen 2012'.
Je toetst een datum in, bv. 26-7-2012, maar die loopt door tot 2013.

Ik wil er uiteraard naar kijken, maar ik moet een beetje meer informatie hebben van hoe en wat. ;)
 
Ik snap het... Logisch!!

Even kijken. De datum welke ik intik betreft telkens de week waarin 1 januari valt. De bedoeling is dat het betreffend jaartal waar het daadwerkelijk om gaat achter de naam Jaartotaal van het laatste werkblad komt te staan.

Dus bijvoorbeeld voor de datum 26-11-2011 heet het laatste werkblad: Jaar-totaal 2012. Voor de datum 31-12-2012 heet het laatste werkblad: Jaar-totaal 2013. Voor de datum 29-12-2014 heet het laatste werkblad: Jaar-totaal 2015, Voor de datum 01-01-2018 heet het laatste werkblad: Jaar-totaal 2018 etc etc etc.
 
Even om het gemakkelijk te houden; Zouden we van het tabblad die na blad "Instellingen" komt het jaargetal van cel B56 kunnen nemen?
 
In feite zou dat moeten werken.

Ik bedoel het jaar wordt al in de eerste week gegeven en als de week bijvoorbeeld met 25-12-2023 dan eindigd deze week op zondag 31-12-2023. Deze week wordt dus niet meer gebruikt.

Maandag begin van week 1 is dan al meteen 1-1-2024 met als gevolg dat dit de eerste datum bij de instellingen wordt. Immers de week wordt genomen waarin 1 januari valt.

Alle andere datums geven 1 januari uiterlijk op zondag of eerder dus deze cel (B56) bevat telkens het juiste jaartal.

Ik heb een beetje vooruit zitten bladeren in jaren en logisch denken..... ik kwam op den duur in 2053 en dan ben ik feitelijk al erg ver vooruit gegaan.
 
Dan zou je hiermee geholpen moeten zijn.

De rode regels zijn de wijzigingen in de code.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ws As Worksheet, y As Long, sq As String
 If Not Intersect(Target, Range("B38")) Is Nothing Then
y = 1
  For Each ws In Worksheets
 [COLOR=#ff0000]  If WorksheetFunction.And(ws.Name <> "Instellingen", Not ws.Name Like "Jaar-totaal*") Then
[/COLOR]   ws.Name = "Maarten " & y
      y = y + 1
    End If
 Next ws
    
y = 1
 For Each ws In Worksheets
[COLOR="#FF0000"]  If WorksheetFunction.And(ws.Name <> "Instellingen", Not ws.Name Like "Jaar-totaal*") Then[/COLOR]
    sq = sq & ws.Name & "|"
    On Error Resume Next
  ws.Name = "Week " & ws.Range("D2") & " " & CLng(Year(ws.Range("B40")))
If InStr(1, sq, ws.Name, vbTextCompare) > 0 Then
  ws.Name = "Week " & ws.Range("D2") & " " & CLng(Year(ws.Range("B40")) + 1)
    End If
   End If
 Next ws
End If
 [COLOR=#ff0000]Sheets(Sheets.Count).Name = "Jaar-totaal " & Year(Sheets(2).Range("B56"))
[/COLOR]End Sub

Edit: derde regel ook natuurlijk.
 
Laatst bewerkt:
Beste HSV,

Ik heb weer een test gedaan.

Alles draait perfect. Geen problemen of fouten meer gezien.

Mijn dank voor al jouw ingestoken tijd in deze.

Voor meer dan 100% tevreden.

Wat mij betreft is deze discussie gesloten. Voordat ik deze afsluit, wacht ik eerst nog een eventuele reactie af.

Wellicht tot een volgende keer.

Met vriendelijke groet,


Maarten.
 
Bij deze Maarten.

Graag gedaan natuurlijk, en leuk om te vernemen dat je tevreden bent. :thumb:
 
Bij deze verklaar ik de discussie met de volgende klik.....

Gesloten.... ;)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan