towary

Przykłady makr Excela napisanych w VBA

Poniższe proste przykłady makr Excela zostały napisane przy użyciu języka VBA 

Szacowany czas czytania: 3 minuti

Przykład VBA z wykorzystaniem Array

Poniższa procedura Sub wczytuje wartości z komórek w kolumnie A aktywnego arkusza, aż do napotkania pustej komórki. Wartości są przechowywane w tablicy. Ten prosty przykład makra programu Excel ilustruje użycie:

  • Deklaracje zmiennych;
  • Tablice dynamiczne;
  • Cykl Do Until;
  • Odwołaj się do komórek w bieżącym arkuszu programu Excel;
  • Funkcja VBA Ubound wbudowany (który zwraca najwyższy indeks tablicy).
' Sub procedure store values in Column A of the active Worksheet
' into an array
Sub GetCellValues()
Dim iRow As Integer            ' stores the current row number
Dim dCellValues() As Double  ' array to store the cell values
iRow = 1
ReDim dCellValues(1 To 10)
' Do Until loop to extract the value of each cell in column A
' of the active Worksheet, as long as the cell is not blank
Do Until IsEmpty(Cells(iRow, 1))
   ' Check that the dCellValues array is big enough
   ' If not, use ReDim to increase the size of the array by 10
   If UBound(dCellValues) < iRow Then
      ReDim Preserve dCellValues(1 To iRow + 9)
   End If
   ' Store the current cell in the CellValues array
   dCellValues(iRow) = Cells(iRow, 1).Value
   iRow = iRow + 1
Loop
End Sub

Procedura przechowuje wartości w kolumnie A aktywnego arkusza w tablicy, należy pamiętać, że:

  • Cykl Do Until wyodrębnia wartości każdej komórki w kolumnie A aktywnego arkusza, ignorując puste komórki
  • Warunek "If UBound(dCellValues) < iRow” sprawdza, czy tablica dCellValues ​​jest wystarczająco duża, aby pomieścić informacje, jeśli nie, użyj ReDim, aby zwiększyć rozmiar tablicy o 10
  • Wreszcie edukacja​​dCellValues(iRow) = Cells(iRow, 1).Value” Przechowuje bieżącą komórkę w tablicy CellValues

Przykład VBA z operacjami matematycznymi

Poniższa procedura Sub odczytuje wartości z kolumny A arkusza o nazwie „Arkusz2” i wykonuje na nich operacje arytmetyczne. Wynikowe wartości są drukowane w kolumnie A aktualnie aktywnego arkusza.

To makro ilustruje:

Biuletyn innowacji
Nie przegap najważniejszych wiadomości dotyczących innowacji. Zarejestruj się, aby otrzymywać je e-mailem.
  • Deklaracje zmiennych;
  • obiekty Excel (w szczególności użycie słowa kluczowego Set i sposób dostępu do obiektu „Kolumny” z obiektu „Arkusze”);
  • Cykl Do Until;
  • Uzyskaj dostęp do arkuszy kalkulacyjnych i zakresów komórek w bieżącym skoroszycie programu Excel.
' Sub procedure to loop through the values in Column A of the Worksheet
' "Sheet2", perform arithmetic operations on each value, and write the
' result into Column A of the current Active Worksheet ("Sheet1")
Sub Transfer_ColA()
Dim i As Integer
Dim Col As Range
Dim dVal As Double
' Set the variable 'Col' to be Column A of Sheet 2
Set Col = Sheets("Sheet2").Columns("A")
i = 1
' Loop through each cell of the column 'Col' until
' a blank cell is encountered
Do Until IsEmpty(Col.Cells(i))
   ' Apply arithmetic operations to the value of the current cell
   dVal = Col.Cells(i).Value * 2 + 1
   ' The command below copies the result into Column A
   ' of the current Active Worksheet - no need to specify
   ' the Worksheet name as it is the active Worksheet.
   Cells(i, 1) = dVal
   i = i + 1
Loop
End Sub

Przykład VBA z zapisem daty modyfikacji

Napiszmy proste makro VBA, które będzie uruchamiane w momencie aktualizacji komórki w określonym zakresie naszego arkusza. Załóżmy, że chcesz śledzić zmiany w kolumnie B (B4 do B11) i zapisać datę i godzinę zmiany w kolumnie A.
Postępujmy tak:

  • W zakładce Developer kliknij opcję „Visual Basic”, aby otworzyć edytor VBA.
  • W edytorze VBA kliknij dwukrotnie edytor kodu powiązany z Arkuszem 2.
  • Wybierz Arkusz z prawej (lub lewej) zakładki i wybierz opcję Zmień.
  • Dodaj kod VBA:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("B1:B10")) Is Nothing Then
        Target.Range("A1:A1").Value = Now
    End If
End Sub

Zapisz skoroszyt z włączonymi makrami (na przykład jako plik .xlsm).


Teraz za każdym razem, gdy aktualizujemy komórkę w kolumnie B (od wiersza 1 do wiersza 10), komórka w kolumnie A automatycznie wyświetli bieżącą datę i godzinę.

Ercole Palmeri

Biuletyn innowacji
Nie przegap najważniejszych wiadomości dotyczących innowacji. Zarejestruj się, aby otrzymywać je e-mailem.

Najnowsze artykuły

Innowacyjna interwencja w rzeczywistość rozszerzoną z przeglądarką Apple w Poliklinice w Katanii

W Poliklinice w Katanii przeprowadzono operację oftalmoplastyki przy użyciu komercyjnej przeglądarki Apple Vision Pro…

3 maja 2024

Korzyści z kolorowanek dla dzieci - świat magii dla wszystkich grup wiekowych

Rozwijanie umiejętności motorycznych poprzez kolorowanie przygotowuje dzieci do bardziej złożonych umiejętności, takich jak pisanie. Kolorować…

2 maja 2024

Przyszłość jest tutaj: jak przemysł żeglugowy rewolucjonizuje gospodarkę światową

Sektor morski to prawdziwa światowa potęga gospodarcza, która osiągnęła 150-miliardowy rynek...

1 maja 2024

Wydawcy i OpenAI podpisują umowy regulujące przepływ informacji przetwarzanych przez Sztuczną Inteligencję

W ubiegły poniedziałek Financial Times ogłosił zawarcie umowy z OpenAI. FT udziela licencji na swoje światowej klasy dziennikarstwo…

Kwiecień 30 2024