Przejdź do treści
Powrót do Centrum Pomocy
Poradniki

Makra Excel VBA — podstawy dla początkujących: nagrywanie, edytor i pierwsza automatyzacja (2026)

Karta Deweloper (Developer) jest domyślnie ukryta — zawiera przyciski do nagrywania makr, edytora VBA i kontrolek formularza.

11 min czytania·Zaktualizowano dzisiaj

Makra Excel to zapisane sekwencje czynności, które wykonujesz w arkuszu — Excel może je odtworzyć automatycznie jednym kliknięciem. Technicznie makra to kod napisany w języku VBA (Visual Basic for Applications) wbudowanym w każdą wersję Excela (Microsoft 365, Excel 2024, Excel 2021), a rozpoczęcie przygody z automatyzacją nie wymaga ani linii programowania: wystarczy włączyć nagrywanie i wykonać czynności ręcznie.

W skrócie — 3 kroki do pierwszego makra

  1. Włącz kartę Deweloper — Plik → Opcje → Dostosowywanie wstążki → zaznacz „Deweloper” → OK
  2. Nagraj makro — Deweloper → Nagraj makro → nazwij je (bez spacji, np. FormatujRaport) → wykonaj czynności → Zatrzymaj nagrywanie
  3. Uruchom — Deweloper → Makra → wybierz makro → Uruchom (lub Alt + F8 i Enter)

VBA nie został zastąpiony przez Office Scripts — w 2026 roku obie technologie współistnieją: VBA to dojrzałe, lokalne rozwiązanie dla komputerów stacjonarnych, a Office Scripts (TypeScript) rozszerza automatyzację na Excela w przeglądarce i Power Automate.

Czym są makra i VBA — definicja dla początkującego

Makro to nagrana i zapisana sekwencja poleceń wykonywanych w Excelu. Gdy nagrywasz makro, Excel tłumaczy każdy Twój ruch (kliknięcie w komórkę, zmianę formatowania, wprowadzenie formuły) na kod VBA (Visual Basic for Applications) — uproszczony dialekt języka Visual Basic osadzony we wszystkich aplikacjach Microsoft Office.

VBA to pełnoprawny język programowania z pętlami, warunkami (If...Then...Else), zmiennymi i obsługą błędów. Dla początkującego kluczowe jest jednak to, że nie musisz znać VBA, aby korzystać z makr — rejestrator makr wygeneruje kod za Ciebie. Możesz go potem przejrzeć i stopniowo uczyć się edytować.

VBA vs Office Scripts — co wybrać w 2026?

CechaVBA (makra)Office Scripts
ŚrodowiskoExcel desktop (Windows, Mac)Excel w przeglądarce (Web) + desktop
JęzykVisual Basic for ApplicationsTypeScript
Nagrywanie✅ Rejestrator makr✅ Rejestrator akcji
Edytor koduVisual Basic Editor (VBE, Alt + F11)Code Editor w przeglądarce
Działa offline✅ Tak (lokalnie)❌ Wymaga połączenia
Power Automate⚠️ Ograniczone wsparcie✅ Natywne
Dojrzałość ekosystemu30+ lat, ogromna społecznośćWprowadzone w 2020, wciąż rozwijane
Format pliku.xlsm, .xlsbZapisane w OneDrive
Kiedy użyćZaawansowana automatyzacja desktop, integracja między Office, legacy systemyAutomatyzacja w chmurze, współdzielenie skryptów, przepływy Power Automate

Ważne: Microsoft potwierdził, że VBA nie jest wycofywane. Office Scripts to rozszerzenie możliwości dla środowiska webowego, a nie następca VBA. Jeśli pracujesz w Excelu desktopowym — VBA pozostaje podstawowym narzędziem automatyzacji.

Jak przygotować Excela do pracy z makrami

Krok 1. Włącz kartę Deweloper

Karta Deweloper (Developer) jest domyślnie ukryta — zawiera przyciski do nagrywania makr, edytora VBA i kontrolek formularza.

  1. Kliknij PlikOpcje
  2. Wybierz Dostosowywanie wstążki
  3. W prawej kolumnie („Karty główne") zaznacz checkbox Deweloper
  4. Kliknij OK

W Excelu dla Mac: Excel → Preferencje → Wstążka i pasek narzędzi → zaznacz „Deweloper".

Krok 2. Dostosuj ustawienia makr (Centrum zaufania)

Domyślnie Excel blokuje makra z powodów bezpieczeństwa. Aby makra działały:

  1. PlikOpcjeCentrum zaufaniaUstawienia Centrum zaufania
  2. Wybierz Ustawienia makr
  3. Zaznacz „Wyłącz wszystkie makra z powiadomieniem" ⭐ (najbezpieczniejsza opcja — Excel zapyta za każdym razem o zgodę na uruchomienie)
  4. Alternatywnie: „Włącz wszystkie makra" tylko jeśli ufasz źródłu plików (niezalecane dla plików z internetu)

Krok 3. Zapisz plik w formacie obsługującym makra

Standardowy format .xlsx nie zapisuje makr. Jeśli nagrasz makro w pliku .xlsx i zapiszesz, Excel ostrzeże Cię, że makra zostaną usunięte. Zawsze zapisuj pliki z makrami jako:

  • .xlsm — Skoroszyt programu Excel z obsługą makr (zalecane)
  • .xlsb — Binarny skoroszyt programu Excel (większe pliki, szybszy odczyt)

Plik → Zapisz jako → wybierz typ „Skoroszyt programu Excel z obsługą makr (*.xlsm)".

Pierwsze makro — nagrywanie krok po kroku

Załóżmy, że codziennie otrzymujesz raport, w którym musisz: scalić kolumny A1:C1 i wpisać tytuł, pogrubić nagłówki w wierszu 2, autodopasować szerokość kolumn i pokolorować wiersz nagłówka na niebiesko. Zamiast klikać ręcznie, nagraj to raz jako makro.

Instrukcja nagrywania

  1. Otwórz nowy plik Excela, zapisz jako Raport.xlsm
  2. Przejdź do karty Deweloper → kliknij Nagraj makro
  3. W oknie dialogowym:
    • Nazwa makra: FormatujRaportDzienny (bez spacji, zaczyna się od litery)
    • Klawisz skrótu: np. Ctrl + Shift + F (unikaj Ctrl + C, Ctrl + V — nadpiszesz standardowe skróty)
    • Przechowuj makro w: Ten skoroszyt (lub „Skoroszyt makr osobistych", jeśli chcesz używać go we wszystkich plikach)
    • Opis: „Formatuje dzienny raport: tytuł, nagłówki, autodopasowanie kolumn"
  4. Kliknij OK — nagrywanie jest aktywne (przycisk zmienia się na „Zatrzymaj nagrywanie")
  5. Wykonaj czynności:
    • Zaznacz A1:C1 → Scal i wyśrodkuj → wpisz „Raport dzienny"
    • Zaznacz wiersz 2 → Pogrubienie (Ctrl + B) → kolor tła niebieski, czcionka biała
    • Zaznacz wszystkie kolumny → kliknij dwukrotnie na granicy nagłówka kolumny (autodopasowanie)
  6. Kliknij Zatrzymaj nagrywanie (lub Alt + T + M + R)

Gotowe! Twoje pierwsze makro jest zapisane. Aby je przetestować: otwórz nowy arkusz, wypełnij go dowolnymi danymi i uruchom makro przez Deweloper → Makra → FormatujRaportDzienny → Uruchom.

Jak zobaczyć i zrozumieć kod VBA

Nagrane makro to tak naprawdę kod VBA, który możesz zobaczyć i edytować:

  1. Kliknij DeweloperVisual Basic (lub Alt + F11) — otworzy się edytor VBA
  2. W lewym panelu (Project Explorer) rozwiń VBAProject (Raport.xlsm)Moduły → kliknij dwukrotnie Module1
  3. Zobaczysz kod podobny do:
Sub FormatujRaportDzienny()
'
' FormatujRaportDzienny Makro
' Formatuje dzienny raport: tytuł, nagłówki, autodopasowanie kolumn
'
    Range("A1:C1").Select
    Selection.Merge
    ActiveCell.FormulaR1C1 = "Raport dzienny"
    Rows("2:2").Select
    Selection.Font.Bold = True
    With Selection.Interior
        .Pattern = xlSolid
        .Color = 12611584
    End With
    Selection.Font.Color = vbWhite
    Cells.Select
    Cells.EntireColumn.AutoFit
    Range("A1").Select
End Sub

Co oznaczają poszczególne elementy:

  • Sub FormatujRaportDzienny() — deklaracja makra (początek procedury)
  • Linie z ' (apostrof) — komentarze, ignorowane przy uruchamianiu
  • Range("A1:C1").Select — zaznacz zakres komórek
  • Selection.Merge — scal zaznaczone komórki
  • ActiveCell.FormulaR1C1 = "Raport dzienny" — wpisz tekst do aktywnej komórki
  • End Sub — koniec makra

Podstawowe pojęcia VBA, które warto poznać

PojęcieZnaczeniePrzykład
ObiektElement Excela, na którym działaszRange, Worksheet, Workbook
Właściwość (Property)Cecha obiektuFont.Bold, Interior.Color
Metoda (Method)Czynność wykonywana na obiekcie.Select, .Copy, .AutoFit
ZmiennaPojemnik na dane (tekst, liczbę)Dim nazwa As String
PętlaWielokrotne wykonanie koduFor i = 1 To 10 ... Next i
WarunekWykonaj kod tylko jeśli warunek spełnionyIf Range("A1").Value > 0 Then...

Praktyczne przykłady makr dla początkujących

Przykład 1. Makro z pętlą — automatyczne numerowanie wierszy

Sub NumerujWiersze()
    Dim i As Integer
    For i = 2 To 101
        Range("A" & i).Value = i - 1
    Next i
End Sub

Wpisuje liczby od 1 do 100 w kolumnie A. Zmienna i przyjmuje kolejne wartości od 2 do 101, a Range("A" & i) tworzy adresy A2, A3… A101.

Przykład 2. Makro z warunkiem — wyróżnij komórki powyżej wartości progowej

Sub WyroznijPowyzejProgu()
    Dim komorka As Range
    For Each komorka In Selection
        If IsNumeric(komorka.Value) And komorka.Value > 1000 Then
            komorka.Interior.Color = vbYellow
        End If
    Next komorka
End Sub

Zaznacz zakres → uruchom makro → wszystkie komórki z liczbą > 1000 zostaną podświetlone na żółto.

Przykład 3. Makro z komunikatem (MsgBox)

Sub Przywitanie()
    Dim imie As String
    imie = InputBox("Jak masz na imię?")
    MsgBox "Cześć, " & imie & "! Twoje makro działa poprawnie."
End Sub

InputBox pobiera dane od użytkownika, MsgBox wyświetla okno komunikatu.

Najczęstsze problemy i ich rozwiązania

„Mam włączone makra, ale przycisk Nagraj makro jest szary"

Prawdopodobnie otworzyłeś plik w widoku chronionym (Protected View) — Excel blokuje edycję i makra w plikach pobranych z internetu. Kliknij żółty pasek u góry: „Włącz edycję". Jeśli problem wciąż występuje, sprawdź, czy plik nie jest zapisany w formacie .xlsx (bez obsługi makr).

„Excel wyświetla błąd: Nie można uruchomić makra. Makro mogło być niedostępne"

Najczęstsze przyczyny:

  • Plik jest zapisany jako .xlsx zamiast .xlsm — zapisz ponownie w formacie z obsługą makr.
  • Makro znajduje się w innym skoroszycie niż ten, z którego próbujesz je uruchomić.
  • Makro zostało zapisane w module arkusza (Sheet1) zamiast w module ogólnym (Module1) — makra zapisane w module arkusza są prywatne dla tego arkusza.

„Nagrane makro nie działa na nowych danych"

Rejestrator makr zapisuje bezwzględne odwołania do komórek (np. zawsze A1:C1). Jeśli dane zmieniają rozmiar, makro może działać nieprawidłowo. Rozwiązania:

  • Użyj odwołań względnych: przed nagrywaniem kliknij Deweloper → Użyj odwołań względnych — makro będzie działać względem aktywnej komórki, a nie konkretnych współrzędnych.
  • Ręcznie zmodyfikuj kod, aby używał UsedRange lub CurrentRegion zamiast stałych adresów.

„Nie mogę zapisać pliku z makrami — Excel usuwa kod VBA"

Excel automatycznie usuwa kod VBA z plików .xlsx. Rozwiązanie: Plik → Zapisz jako → typ pliku: „Skoroszyt programu Excel z obsługą makr (*.xlsm)". Jeśli komunikat powtarza się, sprawdź, czy przypadkowo nie zapisujesz w folderze tymczasowym lub sieciowym z ograniczeniami.

„VBA Editor wyświetla błąd składni: „Oczekiwano: wyrażenie" (Compile error)"

To błąd składni — prawdopodobnie literówka w nazwie właściwości lub metody. Kliknij Debug — edytor podświetli problematyczną linię na żółto. Najczęściej: brak cudzysłowów wokół tekstu (powinno być "tekst", nie 'tekst') lub literówka (np. Range zamiast Range). Popraw i naciśnij zieloną strzałkę „Run", aby kontynuować.

Częste pytania

Czy makra w Excelu są bezpieczne?

Makra mogą przenosić złośliwy kod, dlatego Excel domyślnie je blokuje. Pliki .xlsm z makrami pobrane z internetu otwierają się w widoku chronionym. Bezpieczne praktyki: (1) uruchamiaj makra tylko z zaufanych źródeł, (2) przed uruchomieniem przejrzyj kod w edytorze VBA (Alt + F11), (3) nie włączaj globalnie opcji „Włącz wszystkie makra". Jeśli tworzysz własne makra, są one całkowicie bezpieczne.

Czy makra działają w Excelu na Mac?

Tak, Microsoft Excel dla Mac obsługuje VBA i rejestrator makr — funkcjonalność jest bardzo zbliżona do wersji Windows. Jednak niektóre zaawansowane funkcje (ActiveX, niektóre odwołania do API Windows) mogą nie działać lub działać inaczej. Samo nagrywanie makr, edytor VBA i podstawowe automatyzacje działają identycznie.

Czy muszę znać programowanie, żeby używać makr?

Nie. Rejestrator makr (Deweloper → Nagraj makro) generuje cały kod automatycznie — wystarczy wykonywać czynności w Excelu, a zostaną one zapisane jako makro. Znajomość VBA przydaje się, gdy chcesz edytować nagrane makro, dodać warunki, pętle lub poprawić wydajność — ale możesz zacząć od zera programistycznego doświadczenia i uczyć się stopniowo, czytając wygenerowany kod.

Jaka jest różnica między makrem a formułą w Excelu?

Formuła (np. =SUMA(A1:A10)) to pojedyncze obliczenie wpisane bezpośrednio w komórkę — przelicza się automatycznie przy każdej zmianie danych. Makro to zapisana sekwencja wielu czynności (formatowanie, kopiowanie, scalanie, wysyłanie maila), którą uruchamiasz ręcznie lub przez zdarzenie (np. otwarcie pliku). Formuły są deklaratywne („co ma być wynikiem"), makra są imperatywne („zrób krok 1, potem krok 2...").

Czy makra działają w Excel Online (przeglądarka)?

Nie — VBA i klasyczne makra nie są obsługiwane w Excelu w przeglądarce. W Excel Online używa się Office Scripts (TypeScript), które pełnią podobną rolę automatyzacji, ale są zapisywane w OneDrive i zintegrowane z Power Automate. Jeśli potrzebujesz automatyzacji wyłącznie w przeglądarce, Office Scripts to właściwe narzędzie. Jeśli pracujesz głównie w desktopowej wersji Excela — VBA pozostaje standardem.

Jak przypisać makro do przycisku na arkuszu?

  1. Karta DeweloperWstaw → wybierz Przycisk (kontrolka formularza)
  2. Narysuj przycisk na arkuszu — automatycznie pojawi się okno „Przypisz makro"
  3. Wybierz swoje makro z listy → OK
  4. Kliknij prawym przycisk na przycisku, aby zmienić jego tekst

Od teraz jedno kliknięcie na przycisku uruchomi Twoje makro — idealne rozwiązanie, gdy przygotowujesz arkusz dla innych użytkowników.

Czy mogę wycofać makro po uruchomieniu (Ctrl+Z)?

Nie. Makra nie obsługują cofania (Ctrl + Z). Po uruchomieniu makra wszystkie zmiany są trwałe. Dlatego przed pierwszym uruchomieniem makra zawsze: (1) zapisz plik, (2) przetestuj makro na kopii danych. Jeśli makro zmieniło arkusz nieodwracalnie, zamknij plik bez zapisywania i otwórz ponownie — wrócisz do stanu sprzed uruchomienia.

Twoja przygoda z automatyzacją Excela dopiero się zaczyna

Nauka makr i VBA to inwestycja, która zwraca się już przy pierwszym zaoszczędzonym raporcie. Jeśli potrzebujesz Excela, który w pełni obsługuje VBA, makra i cały ekosystem automatyzacji — bez ograniczeń wersji Online czy subskrypcji — sprawdź legalne, jednorazowe klucze licencyjne w sklepie KluczeSoft:

Microsoft Office — klucze licencyjne od KluczeSoft — pełna wersja desktop z VBA, makrami i edytorem Visual Basic bez subskrypcji.

Najczęściej zadawane pytania

Makra mogą przenosić złośliwy kod, dlatego Excel domyślnie je blokuje. Pliki `.xlsm` z makrami pobrane z internetu otwierają się w widoku chronionym. Bezpieczne praktyki: (1) uruchamiaj makra tylko z zaufanych źródeł, (2) przed uruchomieniem przejrzyj kod w edytorze VBA (`Alt + F11`), (3) nie włączaj globalnie opcji „Włącz wszystkie makra". Jeśli tworzysz własne makra, są one całkowicie bezpieczne.
Tak, Microsoft Excel dla Mac obsługuje VBA i rejestrator makr — funkcjonalność jest bardzo zbliżona do wersji Windows. Jednak niektóre zaawansowane funkcje (ActiveX, niektóre odwołania do API Windows) mogą nie działać lub działać inaczej. Samo nagrywanie makr, edytor VBA i podstawowe automatyzacje działają identycznie.
Nie. Rejestrator makr (Deweloper → Nagraj makro) generuje cały kod automatycznie — wystarczy wykonywać czynności w Excelu, a zostaną one zapisane jako makro. Znajomość VBA przydaje się, gdy chcesz edytować nagrane makro, dodać warunki, pętle lub poprawić wydajność — ale możesz zacząć od zera programistycznego doświadczenia i uczyć się stopniowo, czytając wygenerowany kod.
Formuła (np. `=SUMA(A1:A10)`) to pojedyncze obliczenie wpisane bezpośrednio w komórkę — przelicza się automatycznie przy każdej zmianie danych. Makro to zapisana sekwencja wielu czynności (formatowanie, kopiowanie, scalanie, wysyłanie maila), którą uruchamiasz ręcznie lub przez zdarzenie (np. otwarcie pliku). Formuły są deklaratywne („co ma być wynikiem"), makra są imperatywne („zrób krok 1, potem krok 2...").
Nie — VBA i klasyczne makra nie są obsługiwane w Excelu w przeglądarce. W Excel Online używa się **Office Scripts** (TypeScript), które pełnią podobną rolę automatyzacji, ale są zapisywane w OneDrive i zintegrowane z Power Automate. Jeśli potrzebujesz automatyzacji wyłącznie w przeglądarce, Office Scripts to właściwe narzędzie. Jeśli pracujesz głównie w desktopowej wersji Excela — VBA pozostaje standardem.
1. Karta **Deweloper** → **Wstaw** → wybierz **Przycisk (kontrolka formularza)** 2. Narysuj przycisk na arkuszu — automatycznie pojawi się okno „Przypisz makro" 3. Wybierz swoje makro z listy → OK 4. Kliknij prawym przycisk na przycisku, aby zmienić jego tekst Od teraz jedno kliknięcie na przycisku uruchomi Twoje makro — idealne rozwiązanie, gdy przygotowujesz arkusz dla innych użytkowników.
**Nie.** Makra nie obsługują cofania (`Ctrl + Z`). Po uruchomieniu makra wszystkie zmiany są trwałe. Dlatego przed pierwszym uruchomieniem makra zawsze: (1) zapisz plik, (2) przetestuj makro na kopii danych. Jeśli makro zmieniło arkusz nieodwracalnie, zamknij plik **bez zapisywania** i otwórz ponownie — wrócisz do stanu sprzed uruchomienia.

Czy ten artykuł był pomocny?

Makra Excel VBA — podstawy dla początkujących: nagrywanie… | Centrum Pomocy KluczeSoft