Tutorial excel

Chaidh na h-eisimpleirean macro Excel sìmplidh a leanas a sgrìobhadh a’ cleachdadh VBA 

Ùine leughaidh tuairmseach: 3 minuti

Eisimpleir VBA a 'cleachdadh Array

Bidh an Fo-mhodh a leanas a 'leughadh luachan bho cheallan ann an colbh A den duilleag-obrach gnìomhach, gus an coinnich e ri ceal bàn. Tha na luachan air an stòradh ann an sreath. Tha an eisimpleir macro Excel sìmplidh seo a’ sealltainn cleachdadh:

  • Dearbhaidhean caochlaideach;
  • Arrays fiùghantach;
  • Cearcall Do Until;
  • Thoir sùil air ceallan anns an duilleag-obrach Excel làithreach;
  • An gnìomh VBA Ubound builtin (a thilleas an clàr-amais as àirde de raon).
' 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

Bidh am modh-obrach a’ stòradh nan luachan ann an colbh A den duilleag-obrach gnìomhach ann an sreath, thoir an aire:

  • An cearcall Do Until a’ toirt a-mach luachan gach cealla ann an colbh A den duilleag-obrach gnìomhach, a’ seachnadh cheallan bàn
  • Tha an suidheachadh "If UBound(dCellValues) < iRow” dèan cinnteach gu bheil an sreath dCellValues ​​​​mòr gu leòr airson am fiosrachadh a chumail, mura h-eil, cleachd ReDim gus meud an t-sreath àrdachadh le 10
  • Mu dheireadh, foghlam​​dCellValues(iRow) = Cells(iRow, 1).Value” A ’stòradh a’ chill gnàthach anns an raon CellValues

Eisimpleir VBA le obrachaidhean matamataigeach

Bidh an dòigh-obrach a leanas a’ leughadh na luachan bho cholbh A den duilleag-obrach leis an ainm “Sheet2” agus a’ coileanadh obrachaidhean àireamhachd air na luachan. Tha na luachan a thig às air an clò-bhualadh ann an colbh A den duilleag-obrach gnìomhach gnàthach.

Tha am macro seo a’ nochdadh:

  • Dearbhaidhean caochlaideach;
  • Rudan Excel (gu sònraichte, cleachdadh am prìomh fhacal Set agus mar a gheibh thu cothrom air an nì ‘Columns’ bhon nì ‘Sheets’);
  • Cearcall Do Until;
  • Cothrom air duilleagan-obrach agus raointean cealla anns an leabhar-obrach Excel gnàthach.
' 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

Eisimpleir VBA le clàradh ceann-latha atharrachaidh

Sgrìobhamaid macro VBA sìmplidh a bhios a 'losgadh nuair a thèid cealla ann an raon sònraichte den duilleag againn ùrachadh. Can gu bheil thu airson sùil a chumail air atharrachaidhean ann an colbh B (B4 gu B11) agus ceann-latha agus uair an atharrachaidh ann an colbh A a chlàradh.
Rachamaid air adhart mar seo:

  • Anns an taba Developer cliog air an roghainn"Visual Basic” gus deasaiche VBA fhosgladh.
  • Anns an deasaiche VBA, cliog dùbailte air an deasaiche còd co-cheangailte ri Duilleag2.
  • Tagh Duilleag-obrach bhon taba deas (no clì) agus tagh an roghainn Atharraich.
  • Cuir còd VBA ris:
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

Sàbhail an leabhar-obrach le macros air a chomasachadh (mar eisimpleir, mar fhaidhle .xlsm).


A-nis, a h-uile uair a bhios sinn ag ùrachadh cealla ann an colbh B (bho shreath 1 gu sreath 10), seallaidh an cealla ann an colbh A gu fèin-ghluasadach an ceann-latha agus an àm làithreach.

Ercole Palmeri

Autore