Geschatte leestijd: 3 minuti
De volgende subprocedure leest waarden uit cellen in kolom A van het actieve werkblad, totdat deze een lege cel tegenkomt. De waarden worden opgeslagen in een array. Dit eenvoudige Excel-macrovoorbeeld illustreert het gebruik van:
Do Until
;Ubound
ingebouwde (die de hoogste index van een array retourneert).' 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
De procedure slaat de waarden in kolom A van het actieve werkblad op in een array, let op:
Do Until
extraheert de waarden van elke cel in kolom A van het actieve werkblad, waarbij lege cellen worden genegeerdIf UBound(dCellValues) < iRow
”controleert of de dCellValues-array groot genoeg is om de informatie te bevatten, zo niet, gebruik dan ReDim om de grootte van de array met 10 te vergrotendCellValues(iRow) = Cells(iRow, 1).Value
Slaat de huidige cel op in de CellValues-arrayDe volgende subprocedure leest de waarden uit kolom A van het werkblad met de naam "Blad2" en voert rekenkundige bewerkingen uit op de waarden. De resulterende waarden worden afgedrukt in kolom A van het huidige actieve werkblad.
Deze macro illustreert:
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
Laten we een eenvoudige VBA-macro schrijven die wordt geactiveerd wanneer een cel in een specifiek bereik van ons blad wordt bijgewerkt. Stel dat u de wijzigingen in kolom B (B4 tot en met B11) wilt bijhouden en de datum en tijd van de wijziging in kolom A wilt vastleggen.
Laten we als volgt verder gaan:
Developer
klik op optie "Visual Basic
” om de VBA-editor te openen. 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
Sla de werkmap op met ingeschakelde macro's (bijvoorbeeld als een .xlsm-bestand).
Elke keer dat we een cel in kolom B bijwerken (van rij 1 tot rij 10), geeft de cel in kolom A automatisch de huidige datum en tijd weer.
Ercole Palmeri
Coveware by Veeam zal responsdiensten op het gebied van cyberafpersingsincidenten blijven leveren. Coveware zal forensische en herstelmogelijkheden bieden...
Voorspellend onderhoud zorgt voor een revolutie in de olie- en gassector, met een innovatieve en proactieve benadering van fabrieksbeheer.…
De Britse CMA heeft een waarschuwing afgegeven over het gedrag van Big Tech op de markt voor kunstmatige intelligentie. Daar…
Het "Case Green"-decreet, opgesteld door de Europese Unie om de energie-efficiëntie van gebouwen te verbeteren, heeft zijn wetgevingsproces afgesloten met...