зүйл

VBA ашиглан бичсэн Excel макросын жишээ

Дараах энгийн Excel макро жишээг VBA ашиглан бичсэн 

Тооцоолсон унших хугацаа: 3 минути

Массив ашиглан VBA жишээ

Дараах дэд процедур нь идэвхтэй ажлын хуудасны А баганын нүднүүдийн утгыг хоосон нүдтэй тулгарах хүртэл уншина. Утга нь массив дотор хадгалагдана. Энэхүү энгийн Excel макро жишээ нь дараахыг ашиглахыг харуулж байна:

  • Хувьсах мэдэгдлүүд;
  • Динамик массив;
  • Цикл Do Until;
  • Одоогийн Excel ажлын хуудасны нүднүүдийг харах;
  • VBA функц Ubound buildin (энэ нь массивын хамгийн өндөр индексийг буцаадаг).
' 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

Процедур нь массив дахь идэвхтэй ажлын хуудасны А баганад байгаа утгуудыг хадгалдаг тул дараахь зүйлийг анхаарна уу.

  • Цикл Do Until хоосон нүднүүдийг үл тоомсорлож, идэвхтэй ажлын хуудасны А баганад байгаа нүд бүрийн утгыг гаргаж авдаг
  • нөхцөл"If UBound(dCellValues) < iRow” нь dCellValues ​​массив нь мэдээллийг хадгалах хангалттай том эсэхийг шалгадаг, хэрэв үгүй ​​бол массивын хэмжээг 10-аар нэмэгдүүлэхийн тулд ReDim ашиглана уу.
  • Эцэст нь боловсрол​​dCellValues(iRow) = Cells(iRow, 1).Value” Одоогийн нүдийг CellValues ​​массивт хадгална

Математик үйлдлүүдтэй VBA жишээ

Дараах дэд процедур нь "Хуудас2" нэртэй ажлын хуудасны А баганаас утгуудыг уншиж, утгууд дээр арифметик үйлдлүүдийг гүйцэтгэдэг. Үр дүнгийн утгыг одоогийн идэвхтэй ажлын хуудасны А баганад хэвлэв.

Энэхүү макро нь:

Инновацийн мэдээллийн товхимол
Инновацийн талаарх хамгийн чухал мэдээг бүү алдаарай. Тэднийг имэйлээр хүлээн авахын тулд бүртгүүлнэ үү.
  • Хувьсах мэдэгдлүүд;
  • Excel объектууд (ялангуяа, Set түлхүүр үгийг ашиглах, 'Sheets' объектоос 'Баганууд' объект руу хэрхэн хандах);
  • Цикл Do Until;
  • Одоогийн Excel ажлын дэвтэр дэх ажлын хуудас болон нүдний мужид хандах.
' 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 жишээ

Манай хуудасны тодорхой муж дахь нүд шинэчлэгдэх үед ажилладаг энгийн VBA макро бичье. Та В баганад (B4-ээс В11) өөрчлөлтийг хянаж, А баганад өөрчлөлтийн огноо, цагийг тэмдэглэнэ гэж бодъё.
Ингээд үргэлжлүүлье:

  • Таб дээр Developer сонголт дээр дарна уу "Visual Basic” гэж дарж VBA засварлагчийг нээнэ үү.
  • VBA засварлагч дээр Sheet2-тэй холбоотой код засварлагч дээр давхар товшино уу.
  • Баруун (эсвэл зүүн) табаас Ажлын хүснэгтийг сонгоод Өөрчлөх сонголтыг сонгоно уу.
  • 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-р мөр хүртэл) А баганын нүд автоматаар одоогийн огноо, цагийг харуулах болно.

Ercole Palmeri

Инновацийн мэдээллийн товхимол
Инновацийн талаарх хамгийн чухал мэдээг бүү алдаарай. Тэднийг имэйлээр хүлээн авахын тулд бүртгүүлнэ үү.

Сүүлийн үеийн нийтлэл

Veeam нь хамгаалалтаас авахуулаад хариу арга хэмжээ авах, сэргээх хүртэл ransomware-ийн хамгийн цогц дэмжлэгийг үзүүлдэг

Coveware by Veeam нь кибер хулгайн гэмт хэргийн хариу арга хэмжээг үргэлжлүүлэн үзүүлэх болно. Coveware нь шүүх эмнэлэг, нөхөн сэргээх чадварыг санал болгоно ...

23 Дөрөвдүгээр сар 2024

Ногоон ба дижитал хувьсгал: Урьдчилан таамагласан засвар үйлчилгээ нь газрын тос, байгалийн хийн салбарыг хэрхэн өөрчилж байна вэ?

Урьдчилан таамагласан засвар үйлчилгээ нь газрын тос, байгалийн хийн салбарт хувьсгал хийж, үйлдвэрийн менежментэд шинэлэг, санаачлагатай ханддаг.…

22 Дөрөвдүгээр сар 2024

Их Британийн монополийн эсрэг зохицуулагч GenAI-тай холбоотойгоор BigTech-ийн түгшүүр төрүүлэв

Их Британийн CMA хиймэл оюун ухааны зах зээл дэх Big Tech-ийн зан байдлын талаар анхааруулга гаргажээ. Тэнд…

18 Дөрөвдүгээр сар 2024

Casa Green: Италийн тогтвортой ирээдүйн төлөөх эрчим хүчний хувьсгал

Барилгын эрчим хүчний үр ашгийг дээшлүүлэх зорилгоор Европын холбооноос гаргасан "Case Green" тогтоол нь хууль тогтоох үйл явцаа дуусгасан ...

18 Дөрөвдүгээр сар 2024

Инновацийг өөрийн хэлээр уншаарай

Инновацийн мэдээллийн товхимол
Инновацийн талаарх хамгийн чухал мэдээг бүү алдаарай. Тэднийг имэйлээр хүлээн авахын тулд бүртгүүлнэ үү.

биднийг дагаарай