Middels vba het huidige jaar en een nummer plaatsen.

Status
Niet open voor verdere reacties.

Robert Smidt

Gebruiker
Lid geworden
26 mei 2009
Berichten
947
Beste Helpmij'ers,

Ik ben op zoek naar een code die kijkt of cel "C47" leeg is en zo ja, dat deze het huidige jaar gevolgd door een nummervermelding plaatst.

Code:
If Range("c47") = "" Then Range("c47") =  Jaar &"001"
Uitkomst: bijv. "2016001"

Mijn volgende vraag is:
Wanneer het nieuwe jaar is ingegaan moet deze kijken of in C47 het huidige jaar nog steeds correct is, zo niet, dat deze dan een nieuw nummer aanmaakt bestaande uit het nieuwe jaar gevolgd door 001 bijv. "2017001"

Een antwoord zie ik met veel belangstelling tegemoet.

Alvast bedankt.

M.vr.gr.
Robert Smidt
 
Zoiets? Anders even een voorbeeldje plaatsen met hoe het geheel in elkaar steekt.

Code:
Sub VenA()
If [C47] = "" Then
    If [A1] = "" Or Left([A1], 4) <> CStr(Year(Date)) Then [A1] = Year(Date) & "001" Else [A1] = [A1] + 1
    [C47] = [A1]
End If
End Sub
 
Dank je wel voor jouw reactie.

Hij werkt voor de helft. Wanneer ik 2015 plaats maakt hij daar geen 2016 van. Ik heb even een demobestandje gemaakt waarin je kan zien dat deze het jaar niet wijzigt.Bekijk bijlage Testmacro.xlsm
 
Waar wordt geen 2016 gemaakt? Als er in B47 2015001 staat en je voert de macro uit dan wordt C47 2016000 en D47 2016001. Dus exact zoals in de vraag staat.
 
Wanneer ik bijv. in cel c47 "2015001" zet, dan maakt deze in cel B47 er geen 2016000 van.
 
Mogelijk dat er zo een lampje gaat branden.

Code:
Sub test()
If [C47] = "" Then
    If [b47] = "" Or Left([b47], 4) <> CStr(Year(Date)) Then [b47] = Year(Date) & "000" Else [b47] = [b47] + 1
    [C47] = [b47]
  Else
    MsgBox "C47 is niet leeg dus er is niets gewijzigd"
End If
End Sub
 
Ik denk dat er een kleine verwarring is.

Wanneer het jaar niet meer juist is, dient deze er een nieuw jaar van te maken en wederom weer te beginnen met nummer 000. Daarom heb ik er 2015 van gemaakt maar aangezien wij nu in 2016 leven dient deze het jaar aan te passen en dus 2016000 van te maken. Verder vind ik dat het erg mooi werkt hoor.
 
Dat gebeurt toch? Als je in C47 iets hebt staan dan gebeurt er toch niets! Dus ik heb geen idee wat er niet goed gaat. Als er 2016001 staat wordt het toch ook geen 2016002?
 
Als er in C47 het oude jaar staat (dan staat dat overigens ook in B47) dient het systeem opnieuw te nummeren. Daarom stelde ik ook twee vragen: 1. wanneer er niets staat (dat doet jouw code trouwens goed) en 2. wanneer er een oud jaar staat.

Misschien dat dit in de buurt komt:
Code:
Sub test()
    If [C47] = "" Or Left([b47], 4) <> CStr(Year(Date)) Then [b47] = Year(Date) And "000" & [C47] = [b47]
End Sub

Dat laatste werkt trouwens niet.
 
Ik ben nog even bezig geweest en volgens mij is dit de juiste code

Sub test()
If [c47] = "" Or Left([c47], 4) <> CStr(Year(Date)) Then [c47] = Year(Date) & "000"
End Sub
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan