Примерное время чтения: 3 Minuti
Следующая процедура Sub считывает значения из ячеек в столбце 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Следующая процедура Sub считывает значения из столбца A листа с именем «Лист2» и выполняет арифметические операции над значениями. Полученные значения печатаются в столбце 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 выступило с предупреждением о поведении крупных технологических компаний на рынке искусственного интеллекта. Там…
Указ «Case Green», сформулированный Европейским Союзом для повышения энергоэффективности зданий, завершил законодательный процесс…