Podstawowe działania w arkuszu Excela VBA 13


1. Możliwości VBA w arkuszu Excel

Fajnie, że dotarłeś już do tej części szkolenia VBA Excel. W tym rozdziale omówimy w szczegółach jakie możliwości daje nam VBA w arkuszu danych. Jeśli zastanawiamy się, w jaki sposób napisać program, który wykona za nas określone działania w arkuszu, najprostszą metodą będzie tutaj zarejestrowanie makra. Po zarejestrowaniu możemy zobaczyć kod, który wykona za nas dokładnie te same działania na arkuszu. VBA w Excelu zawiera tysiące różnych możliwych sposobów działania. W tym rozdziale poznamy te, których będziemy często używać. Kod, który będziemy pisać w tym rozdziale powinniśmy wprowadzać do modułu oraz zawrzeć go pomiędzy frazami Sub Nazwa_programu() i End Sub.

2. Podstawowe działania na komórkach arkusza – adresowanie komórek

Jeśli chcemy wykonywać działania na konkretnym arkuszu danych innym, niż ten, na którym się obecnie znajdujemy, aktywujemy go następującym kodem wskazując w cudzysłowie nazwę – w naszym wypadku Arkusz1:

Jeśli chcemy wprowadzić dowolną wartość w komórkę naszego arkusza, powinniśmy najpierw tą komórkę zaadresować. Adresowania dokonujemy przy pomocy polecenia Cells(komórka) lub Range(zakres). Za pomocą polecenia Cells możemy zaadresować dowolną jedną komórkę. Za pomocą polecenia Range adresujemy zarówno pojedynczą komórkę, jak i zakres wielu komórek.

Jesteśmy już w konkretnym arkuszu. By wykonać najprostsze działanie na pojedynczej komórce, korzystamy z przykładu opisanego w rozdziale Pierwszy program:

Jak wcześniej wspomniałem, do pojedynczej komórki w naszym arkuszu możemy odnieść się także poprzez zastosowanie polecenia Cells określając dany wiersz i kolumnę w sposób liczbowy. Dla przykładu Cells(2, 2) odnosić się będzie do komórki “B2”.

Możemy także od razu odnieść się do konkretnej komórki w konkretnym arkuszu. Robimy to łącząc wyżej wymienione kody:

Powyższy przykład wypełnia komórki arkusza danymi. Co jednak, jeśli chcielibyśmy pobrać dane z komórek i np przypisać je do zmiennej? Jeśli mamy już zdefiniowaną zmienną odwracamy powyższe równania:

W ten sposób możemy pobrać dane do naszego kodu VBA i wykonać na nich dowolne działania. Potem, jeśli chcemy możemy wstawić wyniki obliczeń do dowolnych komórek.

3. Manipulacja danymi w komórkach – kopiuj, wklej, wytnij, usuń

Jeśli chcemy wykonać podstawowe działania na komórkach Excela, w pierwszej kolejności zaznaczamy nasz zakres. W drugiej kolejności odnosimy się do zaznaczonego zakresu poleceniem Selection oraz wybieramy po kropce jedno z poleceń kopiujące, wycinające, wklejające, bądź usuwające dane z naszego zakresu.

Kurs Excel VBA - podstawowe działania w arkuszu

Kurs Excel VBA – podstawowe działania w arkuszu

4. Zapisywanie plików VBA Excel

Jeśli chcemy zapisać nasz plik Excela za pomocą kodu VBA, najprostszym sposobem będzie odniesienie się do aktywnego skoroszytu oraz zapisanie go w następujący sposób przy wykorzystaniu polecenia Save:

Jeśli natomiast chcemy zapisać nasz plik w innej, konkretnej lokalizacji wykorzystujemy do tego polecenie SaveAs oraz wpisujemy ścieżkę dla zapisania pliku.

Kod do zapisania pliku w formacie xlsx, a więc Skoroszyt programu Excel:

Kod do zapisania pliku w formacie xlsm, a więc Skoroszyt programu Excel z obsługą makr:

4. Zadania (Rozwiązanie możesz wpisać w komentarzu)

4.1 Napisz program wprowadzający w dowolne komórki Arkusza1 Twoje imię oraz miasto zamieszkania.

4.2 Usprawnij powyższy program – skopiuj i wklej wprowadzone dane do Arkusza2.

4.3 Usprawnij swój program dodając kod zapisujący plik Excela w wybranej przez Ciebie lokalizacji.


Dodaj komentarz

Twój adres email nie zostanie opublikowany.

13 komentarzy do “Podstawowe działania w arkuszu Excela VBA

  • GreG

    Sub praca_domowa()

    Sheets(“Arkusz1”).Range(“A1”) = “imię”
    Sheets(“Arkusz1”).Range(“A2”) = “nazwisko”
    Sheets(“Arkusz1”).Range(“A3”) = “miejsce zamieszkania”
    Sheets(“Arkusz1”).Range(“A1:A3”).Select
    Selection.Copy
    Sheets(“Arkusz5”).Select
    Range(“A1”).Select
    ActiveSheet.Paste

    End Sub

  • Grzegorz_Gie

    Mam pytanie odnośnie kopiowania danych do innego arkusza. Napisałem poprawny kod ale zauważyłem ze przy kolejnym użyciu makra pojawia się błąd:
    “run-time error’104′: Metoda Select z klasy Range nie powiodła się”
    Zauważyłem ze jak wejdę do arkusza z którego pobiera dane i nacisnę ESC czyli odhaczy mi zaznaczenie które pojawia się po użyciu makra to mogę wtedy znowu makro uruchomić.
    Makro uruchamiam z pozycji panelu VBA. Jak zatrzymuje makro tzn resetuje kwadracikiem i uruchamiam na nowo to pojawia ww. błąd a jak wcisne przycisk pauzy to i uruchomię to nie ma błędu.

    • Grzegorz_Gie

      Sub Zadania()

      Sheets(1).Cells(1, 1) = “Imię”
      Sheets(1).Cells(2, 1) = “Nazwisko”
      Sheets(1).Cells(3, 1) = “Miasto”

      Sheets(1).Range(“a1:a3”).Select
      Selection.Copy

      Sheets(4).Select
      Range(“a1:a3”).Select
      ActiveSheet.Paste

      End Sub

  • Kuba

    Sub imie_miasto()

    Worksheets(“arkusz1”).Range(“A1”) = “Jakub”
    Worksheets(“Arkusz1”).Cells(2, 1) = “Kalisz”

    Worksheets(“arkusz1”).Select

    Range(“A1:A2”).Select
    Selection.Copy

    Worksheets(“Arkusz2”).Select
    Range(“B1:B2″).Select

    ActiveSheet.Paste

    ActiveWorkbook.SaveAs Filename:=”C:\Users\PLPiotroJa1\Desktop\makra.xlsm”, _
    FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False

    End Sub

  • Natalia

    Mój kod nie działa , błąd “9”:
    Sub praca_domowa()

    Sheets(“Arkusz1”).Range(“A1”) = “Natalia”
    Sheets(“Arkusz1”).Range(“A1”).Select
    Selection.Copy
    Sheets(“Arkusz2”).Select
    Range(“A1”).Select
    ActiveSheet.Paste

    End Sub

    • Natalia

      Dodałam arkusz 2 ale ten błąd nadal występuje (szczerze to myslałam że skoro jest polecenie by skopiowac to do innego arkusza to on się utworzy sam ze skopiowanymi danymi;) )

    • Arturro

      Natalio,

      Sprawdź proszę czy Twoje arkusze nie nazywają się przypadkiem inaczej, tak jak u mnie : “Sheet1”, “Sheet2” itd.

      Przerobiłem Twój kod na te wartości i u mnie śmiga 🙂

      Sub praca_domowa()

      Sheets(“Sheet1”).Range(“A1”) = “Natalia”
      Sheets(“Sheet1”).Range(“A1”).Select
      Selection.Copy
      Sheets(“Sheet2”).Select
      Range(“A1”).Select
      ActiveSheet.Paste

      End Sub

  • Ula

    Sub Praca_domowa()
    Sheets(“Arkusz3”).Range(“A1”) = “Ula”
    Sheets(“Arkusz3”).Range(“A2”) = “Kot”

    Sheets(“Arkusz3”).select
    Range(“A1:A2”).Select
    Selection.Copy

    Sheets(“Arkusz4”).Select
    Range(“A1:A2″).Select
    ActiveSheet.Paste

    ActiveWorkbook.SaveAs Filename:=”D:\ukotowska\Desktop\pracadomowa.xlsm”,
    FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
    End Sub

  • Ania

    Sub Zadaniedomowe()
    Sheets(“Arkusz1”).Range(“A1”) = “Ania”
    Sheets(“Arkusz1”).Range(“A2”) = “Kowal”
    Sheets(“Arkusz1”).Range(“A3”) = “ul. Polskiej”
    Sheets(“arkusz1”).Cells(4, 1) = “Kraków”

    Sheets(“arkusz1”).Select
    Range(“A1:A4”).Select
    Selection.Copy

    Sheets(“Arkusz2”).Select
    Range(“A1:A4″).Select
    ActiveSheet.Paste
    ActiveWorkbook.SaveAs Filename:=”D:\Zadanie2.xlsm”, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
    End Sub

  • Rafał

    Option Explicit

    Sub zadanie_operacje()

    Range(“A1”) = “Grzegorz”
    Range(“A2”) = “Brzęczyszczykiewicz”
    Range(“A3”) = “Pcim”

    Range(“A1:A3″).Select
    Selection.Copy

    Sheets.Add After:=Arkusz1
    ActiveSheet.Paste

    ActiveWorkbook.SaveAs Filename:=”D:\zadanie3.xlsm”, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False

    End Sub