fbpx

Zmienne i stałe w VBA

Wprowadzenie

Głównym celem języka VBA (Visual Basic for Applications) jest przetwarzanie danych, które mogą być przechowywane w różnych miejscach, takich jak obiekty Excela (np. zakresy arkusza) lub w zdefiniowanych zmiennych. Zmienna to nazwany obszar pamięci komputera, który służy do przechowywania danych i umożliwia manipulowanie wartościami w programach.

VBA oferuje wiele typów danych, począwszy od prostych, jak Boolean, po bardziej złożone, jak Double, które przechowują liczby z podwójną precyzją. Przypisywanie wartości do zmiennej odbywa się za pomocą operatora przypisania, czyli znaku równości (=), gdzie wartość po prawej stronie operatora jest przypisywana do zmiennej po lewej stronie.

Deklarowanie zmiennych polega na nadawaniu im nazw, określaniu typów danych i definiowaniu ich zakresu dostępności. Deklarując zmienną, jednocześnie rezerwujesz dla niej odpowiednią ilość pamięci. Zmienne można zadeklarować wewnątrz procedury, co ogranicza ich zasięg tylko do tej procedury, lub w sekcji deklaracji modułu, co pozwala na ich dostępność w całym module.

Zmienne i stałe

Czym są zmienne w VBA?

Zmienne w VBA to nazwane obszary pamięci komputera używane do przechowywania danych, które można modyfikować i manipulować w trakcie działania programu. Zmiennym przypisuje się typy danych (np. Integer, String, Double), co pomaga określić, jakie wartości mogą przechowywać, oraz zwiększa efektywność zarządzania pamięcią i czytelność kodu.

W VBA najczęściej używamy słowa kluczowego Dim do deklarowania zmiennych. Instrukcja deklaracji, w której używasz Dim, może być umieszczona wewnątrz procedury, co powoduje utworzenie zmiennej na poziomie procedury. Jeśli natomiast deklaracja znajdzie się na początku modułu w sekcji deklaracji, utworzona zmienna będzie dostępna na poziomie całego modułu.

Jak się deklaruje (ustawia) zmienne?

Zmienne w VBA deklaruje się za pomocą słowa kluczowego Dim, po którym następuje nazwa zmiennej i opcjonalnie typ danych.

Dim nazwaZmiennej As TypDanych
  • Dim: Słowo kluczowe używane do deklarowania zmiennych.
  • nazwaZmiennej: Nazwa zmiennej, która musi spełniać pewne zasady (np. pierwsza litera musi być znakiem alfabetycznym).
  • TypDanych: Określa typ danych, które zmienna będzie przechowywać (np. Integer, String, Double).
Czym są typy danych w VBA?

Typy danych w VBA określają, jakiego rodzaju wartości zmienna może przechowywać i ile miejsca w pamięci zostanie dla niej zarezerwowane. Typy danych pomagają w zarządzaniu pamięcią, zapewniają większą efektywność programu i zapobiegają błędom wynikającym z niezgodności typów.

Typy danych:
Typ danychLiczba używanych bajtówZakres wartości
Boolean2Wartości logiczne: True, False (domyślna wartość: False)
Integer2Liczby całkowite od -32,768 do 32,767 (domyślna wartość: 0)
Long4Liczby całkowite od -2,147,483,648 do 2,147,483,647 (domyślna wartość: 0)
Single4Liczby zmiennoprzecinkowe – liczba rzeczywista od -3,402823E38 do -1,401298E-45 i od 1,401298E-45 do 3,402823E38 (wartość domyślna 0)
Double8Liczby zmiennoprzecinkowe o podwójnej precyzji – liczba rzeczywista dwukrotnie większa od Single od -1,79769313486232e+308 do -4,9406564581247e-324 i od 4,9406564581247e-324 do 1,79769313486232e+308 (wartość domyślna 0)
String1 bajt + 1 bajt na znakDo 32,767 znaków (domyślna wartość: „”)
Date8Daty od 1 stycznia 100 r. do 31 grudnia 9999 r.
Currency8Wartości walutowe od -922,337,203,685,477.5808 do 922,337,203,685,477.5807
Variant1 do 8Dowolny typ danych, identyfikowany przez VBA przy pierwszym użyciu (domyślnie: EMPTY)
Czym są słowa kluczowe w VBA?

Słowa kluczowe w VBA to zastrzeżone wyrazy, które mają specjalne znaczenie w języku programowania i są używane do definiowania struktury i logiki kodu. Służą one do deklarowania zmiennych, definiowania funkcji, kontrolowania przepływu programu, obsługi błędów i innych operacji.

Słowa kluczowe używane do deklarowania zmiennych:
  • Dim: Służy do deklarowania zmiennych lokalnych wewnątrz procedur lub zmiennych na poziomie modułu. Zmienne zadeklarowane za pomocą Dim wewnątrz procedury są dostępne tylko w tej procedurze, a na poziomie modułu mają dostęp w całym module.
  • Private: Deklaruje zmienne modułowe, dostępne tylko w tym module.
  • Public: Deklaruje zmienne globalne, dostępne w całym projekcie VBA.
  • Static: Deklaruje zmienne na poziomie procedury, które zachowują wartość między wywołaniami procedury.
Sprawdź kursy Excel VBA!
Jeśli chcesz dowiedzieć się więcej o języku VBA w Excelu i stać się ekspertem w VBA, zachęcamy do wzięcia udziału w naszych kursach Excel VBA!.

Zasady tworzenia nazw zmiennych:
  • Nazwy mogą mieć maksymalnie 255 znaków.
  • Pierwszy znak musi być literą.
  • Dopuszczalne są znaki alfanumeryczne, liczby i niektóre znaki interpunkcyjne.
  • VBA nie rozróżnia wielkości liter.
  • Nazwy nie mogą zawierać spacji, przecinków, kropki ani znaków deklarujących typ (% & ^ ! # @ $).
  • Nie można używać słów zastrzeżonych (keywords) VBA (np. As, Date, Error).
Czym są stałe i ich deklarowanie?

Stała to wartość, która nie zmienia się podczas działania programu. Stałe deklarujemy podobnie do zmiennych, z tą różnicą, że przypisujemy im wartość od razu przy deklaracji.

Składnia:

Const nazwaStalej As TypDanych = Wartość

Przykład:

Const PI As Double = 3.14159
Const NazwaFirmy As String = "Expose"
Dlaczego warto używać stałych?
  • Poprawiają czytelność i porządek w kodzie.
  • Ułatwiają wprowadzanie zmian, ponieważ wartość stałej zmienia się w jednym miejscu.
  • Redukują ryzyko błędów poprzez eliminację powtarzających się wartości w kodzie.

Przykłady użycia

Przykład 1: Dodawanie liczb całkowitych

Chcemy zsumować liczby znajdujące się w komórkach A5 i A6, a wynik wyświetlić w oknie komunikatu.

Dane źródłowe:

Wartość
10
20
Sub DodajLiczby()
    Dim liczba1 As Integer
    Dim liczba2 As Integer
    Dim suma As Integer

    liczba1 = Range("A5").Value ' Pobiera wartość z komórki A5
    liczba2 = Range("A6").Value ' Pobiera wartość z komórki A6
    suma = liczba1 + liczba2    ' Sumuje wartości

    MsgBox "Suma wynosi: " & suma ' Wyświetla wynik w oknie dialogowym message box
End Sub
Zmienne i Stałe w VBA

Przykład 2: Łączenie tekstów

Połączymy teksty z komórek A5 i A6.

Dane źródłowe:

Wartość
Hello
World
Sub PolaczTekst()

    Dim tekst1 As String
    Dim tekst2 As String
    Dim wynik As String

    tekst1 = Range("A5").Value ' Pobiera wartość z komórki A5
    tekst2 = Range("A6").Value ' Pobiera wartość z komórki A6
    wynik = tekst1 & " " & tekst2 ' Łączy teksty wraz z separatorem spacji

    MsgBox wynik ' Wyświetla połączony tekst
End Sub
Zmienne i Stałe w VBA

Przykład 3: Użycie stałej do obliczenia obwodu koła

Obliczymy obwód koła na podstawie promienia w komórce A5.

Dane źródłowe:

Wartość
5
Sub ObliczObwodKola()

    Const PI As Double = 3.14159 ' Stała PI z precyzją do 5 cyfr po przecinku

    Dim promien As Double
    Dim obwod As Double

    promien = Range("A5").Value ' Pobiera wartość promienia z komórki A5
    obwod = 2 * PI * promien    ' Oblicza obwód koła

    MsgBox "Obwód koła wynosi: " & obwod ' Wyświetla wynik
End Sub
Zmienne i Stałe w VBA

Podsumowanie

Zmienne i stałe w VBA są podstawowymi elementami, które umożliwiają przetwarzanie danych w kodzie VBA. Deklarowanie zmiennych i przypisywanie im typów danych pozwala na bardziej efektywne zarządzanie pamięcią oraz zwiększa czytelność i stabilność kodu. Stałe z kolei ułatwiają zarządzanie wartościami, które nie zmieniają się podczas działania programu, co również przyczynia się do mniejszej liczby błędów.

Jednym z częstych problemów, na które można natrafić, jest przypisanie wartości niezgodnych z typem zmiennej, jak np. próba przypisania tekstu do zmiennej liczbowej. Takie operacje prowadzą do błędu „Type mismatch” (niezgodność typów). Aby uniknąć takich sytuacji, należy zawsze upewniać się, że typ danych jest zgodny z wartością, którą próbujesz przypisać do zmiennej. Można również używać funkcji konwersji, takich jak CInt() dla liczb całkowitych czy CDbl() dla liczb rzeczywistych, które zamienią tekst na odpowiedni typ liczbowy, o ile zawartość tekstu jest poprawna.

Zmienne typu Variant oferują pewną elastyczność, ponieważ mogą przechowywać dowolny typ danych, co eliminuje błędy związane z niezgodnością typów. Jednak nadmierne poleganie na Variant nie jest zalecane, ponieważ zmniejsza to wydajność kodu i może prowadzić do nieoczekiwanych rezultatów, gdy typ danych zmiennej zmienia się dynamicznie podczas wykonywania programu. Dlatego warto jawnie deklarować typy zmiennych, co zwiększa przejrzystość i niezawodność kodu.

Kolejnym aspektem, który warto rozważyć, jest obsługa błędów za pomocą On Error GoTo. Mechanizm ten umożliwia zarządzanie błędami, które mogą wystąpić podczas wykonywania kodu, takimi jak błędy dzielenia przez zero czy błędy typu. Chociaż On Error GoTo może pomóc w kontrolowaniu nieprzewidzianych sytuacji, nie powinno się go nadużywać jako substytutu dobrego zarządzania typami danych i właściwego pisania kodu. Nadużywanie tego mechanizmu może prowadzić do sytuacji, gdzie błędy są ukrywane zamiast być poprawiane na etapie pisania kodu, co może skutkować trudniejszym do utrzymania i mniej bezpiecznym kodem.

Innym powszechnym błędem jest Overflow, który występuje, gdy przypisana wartość przekracza zakres, który może przechowywać zmienna danego typu. Na przykład, jeśli zadeklarujesz zmienną typu Integer, która może przechowywać wartości od -32,768 do 32,767, i przypiszesz jej wartość większą niż ten zakres, wystąpi błąd overflow. Aby uniknąć takich sytuacji, warto zrozumieć zakresy typów danych i używać odpowiednich typów dla wartości, które mogą być większe (np. Long zamiast Integer).

Dodatkowo, zaleca się unikanie używania lokalnych znaków diakrytycznych (np. Ć, Ś, Ż) w nazwach zmiennych. Chociaż VBA dopuszcza takie znaki, mogą one powodować problemy z przenośnością kodu oraz kompatybilnością z innymi systemami i narzędziami, które mogą nie obsługiwać poprawnie tych znaków. Dobrą praktyką jest używanie nazw w języku angielskim i unikanie specjalnych znaków.

Warto również zwrócić uwagę na style nazywania zmiennych. Jednym z popularnych stylów jest CamelCase, w którym pierwsze słowo zaczyna się małą literą, a każde kolejne słowo zaczyna się wielką literą, np. mojaLiczba lub liczbaUzytkownikow. Jest to czytelny sposób zapisu, który ułatwia rozpoznawanie różnych słów w nazwie zmiennej.

Inne popularne style zapisu zmiennych to:

  • PascalCase: Każde słowo zaczyna się wielką literą, np. LiczbaUzytkownikow, SredniaWynikow.
  • snake_case: Słowa są oddzielone podkreśleniami, np. liczba_uzytkownikow, srednia_wynikow.
  • kebab-case: Słowa są oddzielone myślnikami, np. liczba-uzytkownikow, srednia-wynikow (rzadko używany w VBA).
  • UPPER_CASE: Wszystkie litery są wielkie, a słowa oddzielone podkreśleniami, używany głównie do stałych, np. MAKSYMALNA_WARTOSC.

Podsumowując, w VBA warto jawnie deklarować wszystkie zmienne, aby uniknąć potencjalnych błędów i zachować pełną kontrolę nad typami danych. Korzystanie z Option Explicit oraz unikanie nadmiernego używania zmiennych Variant pomoże pisać bardziej niezawodny i efektywny kod. Obsługa błędów za pomocą On Error GoTo jest przydatna, ale powinna być stosowana rozsądnie, aby nie ukrywać problemów, które mogą być naprawione poprzez odpowiednie zarządzanie zmiennymi i ich typami.

Zobacz również:

Szkolenia:

udostępnij:
Gratulacje!
Wniosek został wysłany prawidłowo.
Dziękujemy za przesłanie zapytania. Skontaktujemy się z Tobą najszybciej jak to możliwe.