Timp de citire estimat: 3 minute
Următoarea procedură Sub citește valorile din celulele din coloana A a foii de lucru active, până când întâlnește o celulă goală. Valorile sunt stocate într-o matrice. Acest exemplu simplu de macrocomandă Excel ilustrează utilizarea:
Do Until
;Ubound
builtin (care returnează cel mai mare indice al unui tablou).' 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
Procedura stochează valorile în coloana A a foii de lucru active într-o matrice, rețineți că:
Do Until
extrage valorile fiecărei celule din coloana A a foii de lucru active, ignorând celulele goaleIf UBound(dCellValues) < iRow
” verifică dacă matricea dCellValues este suficient de mare pentru a păstra informațiile, dacă nu, utilizați ReDim pentru a crește dimensiunea matricei cu 10dCellValues(iRow) = Cells(iRow, 1).Value
” Stochează celula curentă în matricea CellValuesUrmătoarea procedură Sub citește valorile din coloana A a foii de lucru numită „Sheet2” și efectuează operații aritmetice asupra valorilor. Valorile rezultate sunt tipărite în coloana A a foii de lucru active curente.
Această macrocomandă ilustrează:
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
Să scriem o macrocomandă VBA simplă care se declanșează atunci când o celulă dintr-un anumit interval al foii noastre este actualizată. Să presupunem că doriți să urmăriți modificările din coloana B (B4 la B11) și să înregistrați data și ora modificării în coloana A.
Să procedăm astfel:
Developer
faceți clic pe opțiunea "Visual Basic
” pentru a deschide editorul 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
Salvați registrul de lucru cu macrocomenzile activate (de exemplu, ca fișier .xlsm).
Acum, de fiecare dată când actualizăm o celulă din coloana B (de la rândul 1 la rândul 10), celula din coloana A va afișa automat data și ora curente.
Ercole Palmeri
Luni trecută, Financial Times a anunțat un acord cu OpenAI. FT își licențiază jurnalismul de clasă mondială...
Milioane de oameni plătesc pentru serviciile de streaming, plătind taxe lunare de abonament. Este o părere comună că tu...
Coveware de la Veeam va continua să ofere servicii de răspuns la incidente de extorcare cibernetică. Coveware va oferi capacități criminalistice și de remediere...
Întreținerea predictivă revoluționează sectorul petrolului și gazelor, cu o abordare inovatoare și proactivă a managementului uzinelor...