Beräknad lästid: 3 minuter
Följande underprocedur läser värden från celler i kolumn A i det aktiva kalkylbladet, tills det stöter på en tom cell. Värdena lagras i en array. Detta enkla Excel-makroexempel illustrerar användningen av:
Do Until
;Ubound
inbyggd (som returnerar det högsta indexet för en array).' 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
Proceduren lagrar värdena i kolumn A i det aktiva kalkylbladet i en array, notera att:
Do Until
extraherar värdena för varje cell i kolumn A i det aktiva kalkylbladet, och ignorerar tomma cellerIf UBound(dCellValues) < iRow
” kontrollerar att dCellValues-arrayen är tillräckligt stor för att hålla informationen, om inte, använd ReDim för att öka storleken på arrayen med 10dCellValues(iRow) = Cells(iRow, 1).Value
” Lagrar den aktuella cellen i CellValues-arrayenFöljande underprocedur läser värdena från kolumn A i kalkylbladet med namnet "Sheet2" och utför aritmetiska operationer på värdena. De resulterande värdena skrivs ut i kolumn A i det aktuella aktiva kalkylbladet.
Detta makro illustrerar:
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
Låt oss skriva ett enkelt VBA-makro som aktiveras när en cell i ett specifikt område av vårt ark uppdateras. Anta att du vill spåra ändringar i kolumn B (B4 till B11) och registrera datum och tid för ändringen i kolumn A.
Låt oss fortsätta så här:
Developer
klicka på alternativet "Visual Basic
” för att öppna VBA-redigeraren. 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
Spara arbetsboken med makron aktiverade (till exempel som en .xlsm-fil).
Nu, varje gång vi uppdaterar en cell i kolumn B (från rad 1 till rad 10), kommer cellen i kolumn A automatiskt att visa aktuellt datum och tid.
Ercole Palmeri
Coveware by Veeam kommer att fortsätta att tillhandahålla svarstjänster för cyberutpressning. Coveware kommer att erbjuda kriminaltekniska och saneringsmöjligheter...
Förutsägande underhåll revolutionerar olje- och gassektorn, med ett innovativt och proaktivt förhållningssätt till anläggningsförvaltning.…
UK CMA har utfärdat en varning om Big Techs beteende på marknaden för artificiell intelligens. Där…
Dekretet "Gröna hus", formulerat av Europeiska unionen för att förbättra energieffektiviteten i byggnader, har avslutat sin lagstiftningsprocess med...