Szacowany czas czytania: 3 minuti
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:
Do Until
;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:
Do Until
wyodrębnia wartości każdej komórki w kolumnie A aktywnego arkusza, ignorując puste komórkiIf 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 10dCellValues(iRow) = Cells(iRow, 1).Value
” Przechowuje bieżącą komórkę w tablicy CellValuesPoniż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:
Do Until
;' 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
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:
Developer
kliknij opcję „Visual Basic
”, aby otworzyć edytor 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
W Poliklinice w Katanii przeprowadzono operację oftalmoplastyki przy użyciu komercyjnej przeglądarki Apple Vision Pro…
Rozwijanie umiejętności motorycznych poprzez kolorowanie przygotowuje dzieci do bardziej złożonych umiejętności, takich jak pisanie. Kolorować…
Sektor morski to prawdziwa światowa potęga gospodarcza, która osiągnęła 150-miliardowy rynek...
W ubiegły poniedziałek Financial Times ogłosił zawarcie umowy z OpenAI. FT udziela licencji na swoje światowej klasy dziennikarstwo…