Приблизний час читання: 3 хвилин
Наступна підпроцедура зчитує значення з комірок у стовпці A активного аркуша, доки не знайде порожню комірку. Значення зберігаються в масиві. Цей простий приклад макросу Excel ілюструє використання:
Do Until
;Ubound
вбудований (який повертає найвищий індекс масиву).' 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
Процедура зберігає значення в стовпці A активного аркуша в масиві, зауважте, що:
Do Until
витягує значення кожної клітинки в стовпці A активного аркуша, ігноруючи порожні клітинкиIf UBound(dCellValues) < iRow
” перевіряє, чи достатньо великий масив dCellValues для зберігання інформації, якщо ні, використовуйте ReDim, щоб збільшити розмір масиву на 10dCellValues(iRow) = Cells(iRow, 1).Value
” Зберігає поточну клітинку в масиві CellValues Наступна підпроцедура зчитує значення зі стовпця A робочого аркуша під назвою «Sheet2» і виконує арифметичні операції над значеннями. Отримані значення друкуються в стовпці A поточного активного аркуша.
Цей макрос ілюструє:
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
Давайте напишемо простий макрос VBA, який запускається, коли клітинка в певному діапазоні нашого аркуша оновлюється. Припустімо, ви хочете відстежувати зміни в стовпці B (B4 – B11) і записати дату й час зміни в стовпці A.
Поступимо так:
Developer
натисніть опцію "Visual Basic
”, щоб відкрити редактор 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
Збережіть книгу з увімкненими макросами (наприклад, як файл .xlsm).
Тепер щоразу, коли ми оновлюємо клітинку в стовпці B (від рядка 1 до рядка 10), клітинка в стовпці A автоматично відображатиме поточну дату й час.
Ercole Palmeri
Coveware від Veeam продовжить надавати послуги реагування на інциденти кібервимагання. Coveware запропонує криміналістику та можливості відновлення…
Прогнозне технічне обслуговування революціонізує нафтогазовий сектор завдяки інноваційному та проактивному підходу до управління заводом.…
CMA Великобританії випустило попередження щодо поведінки Big Tech на ринку штучного інтелекту. Там…
Указ «Case Green», розроблений Європейським Союзом для підвищення енергоефективності будівель, завершив свій законодавчий процес з…