Очаквано време за четене: 3 Minuti
Следната подпроцедура чете стойности от клетки в колона 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“, формулиран от Европейския съюз за повишаване на енергийната ефективност на сградите, приключи своя законодателен процес с...