• 2
  • 0
  • 1

Dzień dobry.

Napisałem makro, które robi prawie dokładnie to co chcę. Proszę o pomoc w jednym punkcie. Mianowicie nie mogę rozgryźć dlaczego makro nadaje nazwę nowo tworzonemu plikowi tylko z nieparzystym miesiącem?

Działa to teraz tak:
jak wpiszę w inputbox "1" to jest nazwa styczeń (2019_01.xlsx) - OK
jak wpiszę 2 to też jest styczeń (2019_01.xlsx) - BAD
jak wpiszę 3 to jest marzec (2019_03.xlsx) - OK
jak wpiszę 4 to jest marzec (2019_03.xlsx) - BAD
itd...

Próbowałem sprawdzić działanie różnych poprawek: przerzucania danych z inputboxa ze stringa na liczbę, sprawdzałem co się dzieje w Locals (wygląda ok), ale tego nie udało mi się poprawić.

Załączniki

  • xlsm

    _report_creator_altkom.xlsm ( 22K )
  • txt

    _report_creator_altkom_code.tx... ( 2K )
Damian_Bednarczyk
  • Zapytał
  • @ Damian_Bednarczyk | 16.05.2019
    • 1
    • 0
    • 0

Odpowiedzi (2)

  • 0

Przyjrzyj się wartości zmiennej dy w momencie zapisywania pliku i wpływowi przekroczenia liczby dni danego miesiąca w funkcji DateSerial. :)

Mirosław_Janiak
  • Odpowiedział
  • @ Mirosław_Janiak | 17.05.2019
    • 1
    • 7
    • 1
  • 0

Jak wyżej PLUS:

"dy" osiąga po wyjściu z pętli wartość o krok (tutaj równy 1) wyższą od ld (zawsze tak, jest w pętli for to).

W kombinacji z date, serial powoduje te śmieszne wyniki w postaci przesuwania, bądź nie numeru mth.

 

Nie wnikając w resztę, zmieniłem:

ActiveWorkbook.SaveAs Format(DateSerial(Year(Date), mth - 1, dy), "yyyy_mm") & ".xlsx"

na

ActiveWorkbook.SaveAs Format(DateSerial(Year(Date), mth, 1), "yyyy_mm") & ".xlsx".

 

Proszę o odpowiedź, czy ta zmiana (skuteczna) nie rzutuje na coś innego co mogłem przeoczyć.

Dzięki.

Mirosław Kolasa.

 

PS.

Proszę nie pisać DisplayAlerts wewnątrz pętli. Ta klauzula powinna być przed wejściem w pętlę.

Inaczej to jest hamulec.

  • Odpowiedział
  • @ | 17.05.2019
  • TRENER ALTKOM AKADEMII