Helpmij.nl
Helpmij.nl
Helpmij.nl

Quote

Weergeven resultaten 1 tot 18 van 18

Onderwerp: Ieder jaar op 1 januari een messagebox bij openen bestand

  1. #1
    Mega Senior vrouw's avatar
    Geregistreerd
    27 maart 2010
    Vraag is niet opgelost

    Ieder jaar op 1 januari een messagebox bij openen bestand

    Hi all,

    Is het mogelijk om een excel file zo te maken dat :
    ieder jaar op 1 januari een messagebox bij openen van het bestand komt?

  2. #2
    Giga Senior cow18's avatar
    Geregistreerd
    24 mei 2008
    Locatie
    Alveringem, België
    ja, dat is mogelijk, maar dan moet je wel dat bestand openen op die 1e januari, als die al geopend is of pas op 2 januari geopend wordt, dan ben je er aan voor de moeite.
    Een simpele "workbook_open"-macro in ThisWorkbook

  3. #3
    Mega Senior vrouw's avatar
    Geregistreerd
    27 maart 2010
    Hmm, daar had ik niet over nagedacht.

    Dan word het idd een stuk lastiger vrees ik want kans is héél groot dat het niet op 1 januari word geopend maar een paar dagen later.
    De melding zou dan alleen in de eerste 2 weken van het nieuwe jaar moeten komen (maar dat is niet te doen vrees ik)

  4. #4
    Mega Honourable Senior Member Aar's avatar
    Geregistreerd
    3 augustus 2014
    Ik ben benieuwd wat de gedachte is aan die melding.
    Een actie die handmatig uitgevoerd moet worden voordat je veilig verder kan werken?

    In dat geval kan je het ook automatiseren.
    Ik ben geen kei in VB maar je kan vast wel wat bouwen dat er bijv. een tabblad automatisch wordt aangemaakt als het huidige jaar nog niet als tabblad bestaat.

    Dus vertel eens meer.

    Of je zou een extra database kunnen opzetten die zo relationeel mogelijk is, zodat je daar geen rekening mee hoeft te houden.
    maar zonder een duidelijk verhaal is het koffiedik kijken.
    Laatst aangepast door Aar : 31 juli 2021 om 12:55
    Was voorheen: PHP4U

  5. #5
    Tera Honourable Senior Member edmoor's avatar
    Geregistreerd
    8 september 2000
    Locatie
    Zuid-Holland
    Quote Origineel gepost door vrouw Bekijk Bericht
    Dan word het idd een stuk lastiger vrees ik want kans is héél groot dat het niet op 1 januari word geopend maar een paar dagen later.
    De melding zou dan alleen in de eerste 2 weken van het nieuwe jaar moeten komen (maar dat is niet te doen vrees ik)
    Dat lijkt me geen enkel probleem.
    Plaats eens een documentje waarin je dat zou willen.
    "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

  6. #6
    Als je jou vraag sec beantwoord dan is het niet zo spannend.

    hier moet je een eind mee komen in de Thisworkbook module

    Code:
    Private Sub Workbook_Open()
    
    If today >= IsDate("1.1." & Year(today)) And today <= IsDate("15.01." & Year(today)) Then MsgBox prompt:="Er is een nieuw jaar begonnen"
    
    End Sub
    en om de code met vandaag tm 15 aug te testen kun je deze in een gewone module (bijv Module1)

    Code:
    Sub Testnu()
    
    If today >= IsDate("31.7." & Year(today)) And today <= IsDate("15.08." & Year(today)) Then MsgBox prompt:="Er is een nieuw jaar begonnen"
    
    End Sub

    Maar net als Aar denk ik dat er wel iets meer achter je vraag zit van wat je nu precies wilt bereiken.

  7. #7
    Mega Senior vrouw's avatar
    Geregistreerd
    27 maart 2010
    Het gaat om onderstaande code die werkt als het 2021 is.

    Als het 2022 is moet ik dat weer aanpassen voor de werkbladen die dan over 2022 gaan.

    Code:
    Private Sub Workbook_Open()
    
      With Sheets("2021").Cells(1).CurrentRegion
        .AutoFilter 1, "<" & CLng(Date)
        .Offset(1).Copy Sheets("Verleden 2021").Cells(Rows.Count, 1).End(xlUp).Offset(1)
        .Offset(1).EntireRow.Delete
        .AutoFilter
      End With
      
    End Sub

  8. #8
    Mega Honourable Senior Member Aar's avatar
    Geregistreerd
    3 augustus 2014
    Ik denk dat aanpassen naar een automatisch werkend script een beter idee is dan enkel een alert te tonen.
    Zal je net zien dat je opeens een andere werknemer hebt, die na drie weken inlogt en de melding niet ziet, en je datasheet dus verprutst.

    In Engeland zeggen ze ook:
    "Assumptions are the mother of all fƯck-ups!"
    Laatst aangepast door Aar : 31 juli 2021 om 13:28
    Was voorheen: PHP4U

  9. #9
    Mega Senior vrouw's avatar
    Geregistreerd
    27 maart 2010
    Quote Origineel gepost door Aar Bekijk Bericht
    Ik denk dat aanpassen naar een automatisch werkend script een beter idee is dan enkel een alert te tonen.
    [/I]
    Ik had dat geprobeert met onderstaande maar dat werkte niet:

    Code:
    Private Sub Workbook_Open()
    
      With Sheets("2021"&"2023"&"2023").Cells(1).CurrentRegion
        .AutoFilter 1, "<" & CLng(Date)
        .Offset(1).Copy Sheets("Verleden 2021"&"Verleden 2023"&"Verleden 2023").Cells(Rows.Count, 1).End(xlUp).Offset(1)
        .Offset(1).EntireRow.Delete
        .AutoFilter
      End With
      
    End Sub
    Laatst aangepast door vrouw : 31 juli 2021 om 13:33

  10. #10
    Tera Honourable Senior Member edmoor's avatar
    Geregistreerd
    8 september 2000
    Locatie
    Zuid-Holland
    Je hebt dus een werkblad met als naam "202120232023"?
    "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

  11. #11
    Giga Senior cow18's avatar
    Geregistreerd
    24 mei 2008
    Locatie
    Alveringem, België
    Code:
    Private Sub Workbook_Open()
       On Error Resume Next
       hj = ThisWorkbook.Names("Huidig_Jaar").RefersToR1C1 'lees waarde van gedefinieerde naam "Huidig_Jaar" uit
       On Error GoTo 0
       If VarType(hj) = vbEmpty Then ThisWorkbook.Names.Add Name:="Huidig_Jaar", RefersToR1C1:="=xxx" 'naam bestond nog niet, dan aanmaken met dummy-inhoud
    
       If hj <> "=" & Year(Date) Or Format(Date, "ddmm") = "0101" Then MsgBox "Het is weeral nieuwjaar !!!!", vbInformation 'jaar verschilt van huidig jaar of we zijn nog steeds 1 jan, dan msgbox
       ThisWorkbook.Names("Huidig_Jaar").RefersToR1C1 = "=" & Year(Now)  'huidig jaar erin zetten
    End Sub

  12. #12
    Mega Senior vrouw's avatar
    Geregistreerd
    27 maart 2010
    Quote Origineel gepost door edmoor Bekijk Bericht
    Je hebt dus een werkblad met als naam "202120232023"?
    nee verschillende werkbladen genaamd
    2021 en 2022 en 2023
    en
    Verleden 2021 en Verleden 2022 en Verleden 2023

  13. #13
    Tera Honourable Senior Member edmoor's avatar
    Geregistreerd
    8 september 2000
    Locatie
    Zuid-Holland
    Dan kan dit uiteraard niet:
    Sheets("2021"&"2023"&"2023")
    "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

  14. #14
    Mega Senior vrouw's avatar
    Geregistreerd
    27 maart 2010
    Quote Origineel gepost door edmoor Bekijk Bericht
    Dan kan dit uiteraard niet:
    Sheets("2021"&"2023"&"2023")
    Dan moet het zo?
    Code:
    Private Sub Workbook_Open()
    
      With Sheets(Array("2021", "2022", "2023")).Cells(1).CurrentRegion
        .AutoFilter 1, "<" & CLng(Date)
        .Offset(1).Copy ("Sheets(Array("Verleden 2021", "Verleden 2020", "Verleden 2023")).Select").Cells(Rows.Count, 1).End(xlUp).Offset(1)
        .Offset(1).EntireRow.Delete
        .AutoFilter
      End With
      
    End Sub

  15. #15
    Tera Honourable Senior Member edmoor's avatar
    Geregistreerd
    8 september 2000
    Locatie
    Zuid-Holland
    Dat denk ik niet, maar met een voorbeeld documentje krijg je sneller en beter antwoord.
    "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

  16. #16
    Giga Honourable Senior Member
    Geregistreerd
    2 maart 2013
    Losse tabjes met eenduidige data is nooit een goed idee.
    Code:
    Private Sub Workbook_Open()
      With Sheets(cstr(year(date))).Cells(1).CurrentRegion
        .AutoFilter 1, "<" & CLng(Date)
        .Offset(1).Copy Sheets("Verleden "&year(date)).Cells(Rows.Count, 1).End(xlUp).Offset(1)
        .Offset(1).EntireRow.Delete
        .AutoFilter
      End With
     End Sub
    Je kan een paard naar het water leiden, maar je kan het niet dwingen te drinken.

  17. #17
    Mega Senior vrouw's avatar
    Geregistreerd
    27 maart 2010
    @ edmoor hierbij een voorbeeld bestand.
    @ VenA In het voorbeeld bestand heb ik nu jouw code ingezet maar met openen direct een error.
    Ook word wel de regel met de datum in het verleden van 2021 bij het openen verplaatst naar het tabblad 'verleden 2021'. (dat gaat goed.
    Echter om te testen ook een datum in het verleden in de sheet '2022' gezet en daar word de regel niet verplaatst naar 'verleden 2022'
    Bijgevoegde bestanden Bijgevoegde bestanden

  18. #18
    Giga Honourable Senior Member
    Geregistreerd
    2 maart 2013
    Als je er niets van begrijpt dan kan je beter geen VBA gebruiken. Wat zal Year(Date) doen? Daarnaast is het onzinnig om alles in losse tabjes te zetten. Als je code uitvoert op een werkblad waar ook Events in staan dan moet je deze even uitzetten anders loop je het risico dat het hele zaakje in de soep loopt.
    Voor het huidige jaar
    Code:
    Private Sub Workbook_Open()
      Application.EnableEvents = False
      With Sheets(CStr(Year(Date))).ListObjects(1).Range
        .AutoFilter 1, "<" & CLng(Date)
        .Offset(1).Copy Sheets("Verleden " & Year(Date)).Cells(Rows.Count, 1).End(xlUp).Offset(1)
        If .Columns(1).SpecialCells(2).Count > 1 Then .Offset(1).EntireRow.Delete
        .AutoFilter
      End With
      Application.EnableEvents = True
     End Sub
    Laatst aangepast door VenA : 1 augustus 2021 om 18:06
    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

Regels
Help

Helpmij.nl en business

Partners
Sponsoren