{"id":801,"date":"2025-11-02T10:00:29","date_gmt":"2025-11-02T10:00:29","guid":{"rendered":"https:\/\/olgamironczuk.pl\/?p=801"},"modified":"2026-03-22T17:24:15","modified_gmt":"2026-03-22T16:24:15","slug":"kalendarz-adwentowy-2025-excel-vba","status":"publish","type":"post","link":"https:\/\/olgamironczuk.pl\/en\/kalendarz-adwentowy-2025-excel-vba\/","title":{"rendered":"Advent Calendar 2025 (Excel + VBA)"},"content":{"rendered":"<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\"><div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"450\" src=\"http:\/\/olgamironczuk.pl\/wp-content\/uploads\/2025\/11\/kalendarz_adwentowy.gif\" alt=\"\" class=\"wp-image-862\"\/><\/figure>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\">\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-8f761849 wp-block-group-is-layout-flex\">\n<p class=\"has-small-font-size wp-block-paragraph\"><strong>Project:&nbsp;<\/strong>Advent Calendar 2025 (Excel + VBA)<br><strong>Tools:&nbsp;<\/strong>Microsoft Excel (UI), VBA (logic), GitHub (repo + documentation)<br><strong>Description:&nbsp;<\/strong>A custom Advent calendar built as a mini offline application in Excel. The project combines a user interface (clickable windows\/postcards), time-based logic, and persistent saving of the application state.<br><strong>Objective:<\/strong>&nbsp;Building a cohesive application in Excel\/VBA with date-based access control, persistent state, game rules, and logic separated from the UI layer.<strong><br>Data:&nbsp;<\/strong>No classic analytical dataset \u2013 this is an application-style project (event-driven UI, control table, persistent state).<br><strong>Repository:<\/strong> <img decoding=\"async\" style=\"width:26px; height:auto; vertical-align:middle; position:relative; top:0px; margin:0 6px 0 6px;\" src=\"http:\/\/olgamironczuk.pl\/wp-content\/uploads\/2026\/01\/github-mark.png\" alt=\"GitHub\"> <a href=\"https:\/\/github.com\/Waderlla\/KalendarzAdwnetowy_2025_by_Olga_Mironczuk_x_KajoData\" target=\"_blank\" rel=\"noreferrer noopener\">See on GitHub <\/a><\/p>\n\n\n\n<div class=\"kds-partner-badge\" aria-label=\"Promotion partner: KajoData (discount code hidden in the calendar)\">\n  <div class=\"kds-partner-line1\">\n    <span class=\"kds-partner-title\">Promotion partner:<\/span>\n    <span class=\"kds-partner-name\">KajoData<\/span>\n  <\/div>\n\n  <div class=\"kds-partner-line2\">\n    <span class=\"kds-partner-note\">(discount code hidden in the calendar)<\/span>\n  <\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<!--more Czytaj wi\u0119cej-->\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\">\n<h2 class=\"wp-block-heading\">Introduction<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:15px\">The project was created with festive fun and user interaction in mind, but from a technical perspective it was built like a simple application: it features time-based logic, progress control, and persistent state saving.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:15px\">The calendar works entirely offline \u2014 the user downloads an .xlsm file and runs it locally in desktop Excel. The interface guides the user through 24 \u201cwindows\u201d in the form of postcards with tasks, which can be completed and confirmed through interaction with UI elements.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Data<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:15px\">The project does not use external datasets. The application state is driven by control data stored directly within the Excel file.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li style=\"font-size:15px\"><strong>Application state:<\/strong> stored in a control worksheet called \u201cElf Secret Notes\u201d (hidden from the user)<\/li>\n\n\n\n<li style=\"font-size:15px\"><strong>Functional scope:<\/strong> 24 days (windows), with availability and lock rules based on the date and the user\u2019s action history.<\/li>\n\n\n\n<li style=\"font-size:15px\"><strong>Persistence:<\/strong> the user\u2019s progress is not reset after closing the file.<\/li>\n<\/ul>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<iframe loading=\"lazy\" src=\"https:\/\/www.linkedin.com\/embed\/feed\/update\/urn:li:ugcPost:7394100689758552064?compact=1\" height=\"500\" width=\"280\" frameborder=\"0\" allowfullscreen=\"\" title=\"Osadzona publikacja\"><\/iframe>\n<\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Process<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:16px\"><strong>1) Application logic (VBA)<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li style=\"font-size:15px\">designing date-based rules for window availability<\/li>\n\n\n\n<li style=\"font-size:15px\">handling time constraints: the user has 3 days to complete a task (after the deadline, the window becomes locked); validating progress and the conditions required to unlock the finale<\/li>\n\n\n\n<li style=\"font-size:15px\">separating responsibilities into VBA modules (logic\/actions\/UI\/effects)<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:16px\"><strong>2) Persistent state<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li style=\"font-size:15px\">saving progress in a technical worksheet (control table)<\/li>\n\n\n\n<li style=\"font-size:15px\">ensuring there is no risk of progress loss after closing Excel<\/li>\n\n\n\n<li style=\"font-size:15px\">the application state serves as the single source of truth for reconstructing the UI<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:16px\"><strong>3) User interface (Excel as the UI)<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li style=\"font-size:15px\">Clickable elements in the worksheet serve as the application\u2019s UI.<\/li>\n\n\n\n<li style=\"font-size:15px\">Task completion is confirmed by placing a stamp in the designated spot.<\/li>\n\n\n\n<li style=\"font-size:15px\">UI elements are dynamically updated (active\/inactive windows, locks, visual effects).<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:16px\"><strong>4) Documentation + repository<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:15px\">The repository includes:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li style=\"font-size:15px\">VBA modules<\/li>\n\n\n\n<li style=\"font-size:15px\">architecture and logic-flow documentation<\/li>\n\n\n\n<li style=\"font-size:15px\">module descriptions (modules.md)<\/li>\n\n\n\n<li style=\"font-size:15px\">A user-facing README (no spoilers)<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Results<\/h2>\n\n\n\n<ul style=\"font-size:15px\" class=\"wp-block-list\">\n<li>a fully offline interactive Advent calendar<\/li>\n\n\n\n<li>a time-based rules and lock system that ensures a consistent \u201cgame\u201d flow<\/li>\n\n\n\n<li>a persistent application state that allows continuation without resetting progress<\/li>\n\n\n\n<li>the entire project is documented with technical documentation (portfolio-style project)<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Reflections<\/h2>\n\n\n\n<ul style=\"font-size:15px\" class=\"wp-block-list\">\n<li><strong>Excel + VBA can function as an application environment<\/strong>when it is designed as a system: UI + logic + state.<\/li>\n\n\n\n<li>The key was maintaining predictable behavior: logic based on a single source of truth (the control table).<\/li>\n\n\n\n<li>Separating the logic layer from the interface helped keep the code organized and made behavior testing easier.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Role of AI in the project<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:15px\">In the project, I used AI as a tool to support conceptual work and iterative development of VBA solutions.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:15px\">On my side, this included:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li style=\"font-size:15px\">designing the application logic<\/li>\n\n\n\n<li style=\"font-size:15px\">architectural decisions<\/li>\n\n\n\n<li style=\"font-size:15px\">testing behavior in Excel<\/li>\n\n\n\n<li style=\"font-size:15px\">bringing the solution to a stable, predictable outcome<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Final notes<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:15px\">The project is an original, portfolio-style work. The repository presents both the final outcome and the design thinking process, along with full technical documentation.<\/p>\n\n\n\n<div style=\"height:63px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"442\" src=\"https:\/\/olgamironczuk.pl\/wp-content\/uploads\/2026\/01\/screen1-1024x442.png\" alt=\"\" class=\"wp-image-803\" srcset=\"https:\/\/olgamironczuk.pl\/wp-content\/uploads\/2026\/01\/screen1-1024x442.png 1024w, https:\/\/olgamironczuk.pl\/wp-content\/uploads\/2026\/01\/screen1-300x130.png 300w, https:\/\/olgamironczuk.pl\/wp-content\/uploads\/2026\/01\/screen1-768x332.png 768w, https:\/\/olgamironczuk.pl\/wp-content\/uploads\/2026\/01\/screen1-1536x663.png 1536w, https:\/\/olgamironczuk.pl\/wp-content\/uploads\/2026\/01\/screen1-2048x885.png 2048w, https:\/\/olgamironczuk.pl\/wp-content\/uploads\/2026\/01\/screen1-18x8.png 18w, https:\/\/olgamironczuk.pl\/wp-content\/uploads\/2026\/01\/screen1-850x367.png 850w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"450\" src=\"https:\/\/olgamironczuk.pl\/wp-content\/uploads\/2026\/01\/screen-1024x450.png\" alt=\"\" class=\"wp-image-804\" srcset=\"https:\/\/olgamironczuk.pl\/wp-content\/uploads\/2026\/01\/screen-1024x450.png 1024w, https:\/\/olgamironczuk.pl\/wp-content\/uploads\/2026\/01\/screen-300x132.png 300w, https:\/\/olgamironczuk.pl\/wp-content\/uploads\/2026\/01\/screen-768x337.png 768w, https:\/\/olgamironczuk.pl\/wp-content\/uploads\/2026\/01\/screen-18x8.png 18w, https:\/\/olgamironczuk.pl\/wp-content\/uploads\/2026\/01\/screen-850x373.png 850w, https:\/\/olgamironczuk.pl\/wp-content\/uploads\/2026\/01\/screen.png 1266w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"429\" src=\"https:\/\/olgamironczuk.pl\/wp-content\/uploads\/2026\/01\/screen2-1024x429.png\" alt=\"\" class=\"wp-image-806\" srcset=\"https:\/\/olgamironczuk.pl\/wp-content\/uploads\/2026\/01\/screen2-1024x429.png 1024w, https:\/\/olgamironczuk.pl\/wp-content\/uploads\/2026\/01\/screen2-300x126.png 300w, https:\/\/olgamironczuk.pl\/wp-content\/uploads\/2026\/01\/screen2-768x322.png 768w, https:\/\/olgamironczuk.pl\/wp-content\/uploads\/2026\/01\/screen2-18x8.png 18w, https:\/\/olgamironczuk.pl\/wp-content\/uploads\/2026\/01\/screen2-850x357.png 850w, https:\/\/olgamironczuk.pl\/wp-content\/uploads\/2026\/01\/screen2.png 1266w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>","protected":false},"excerpt":{"rendered":"<p>Projekt:&nbsp;Kalendarz Adwentowy 2025 (Excel + VBA)Narz\u0119dzia:&nbsp;Microsoft Excel (UI), VBA (logika), GitHub (repo + dokumentacja)Opis:&nbsp;Autorski kalendarz adwentowy stworzony jako mini-aplikacja offline w Excelu. Projekt \u0142\u0105czy interfejs u\u017cytkownika (klikane okienka\/poczt\u00f3wki), logik\u0119 opart\u0105 o regu\u0142y czasowe oraz trwa\u0142e zapisywanie stanu aplikacji.Cel:&nbsp;Zbudowanie sp\u00f3jnej aplikacji w \u015brodowisku Excel\/VBA: z kontrol\u0105 dost\u0119pu zale\u017cn\u0105 od daty, trwa\u0142ym stanem, zasadami gry oraz logik\u0105&#8230;<\/p>","protected":false},"author":1,"featured_media":862,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[19,21,22],"tags":[],"class_list":["post-801","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-excel","category-projekty","category-vba"],"_links":{"self":[{"href":"https:\/\/olgamironczuk.pl\/en\/wp-json\/wp\/v2\/posts\/801","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/olgamironczuk.pl\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/olgamironczuk.pl\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/olgamironczuk.pl\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/olgamironczuk.pl\/en\/wp-json\/wp\/v2\/comments?post=801"}],"version-history":[{"count":15,"href":"https:\/\/olgamironczuk.pl\/en\/wp-json\/wp\/v2\/posts\/801\/revisions"}],"predecessor-version":[{"id":2365,"href":"https:\/\/olgamironczuk.pl\/en\/wp-json\/wp\/v2\/posts\/801\/revisions\/2365"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/olgamironczuk.pl\/en\/wp-json\/wp\/v2\/media\/862"}],"wp:attachment":[{"href":"https:\/\/olgamironczuk.pl\/en\/wp-json\/wp\/v2\/media?parent=801"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/olgamironczuk.pl\/en\/wp-json\/wp\/v2\/categories?post=801"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/olgamironczuk.pl\/en\/wp-json\/wp\/v2\/tags?post=801"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}