Thầy ơi, thầy có thể giải thích cho e nội dung của những câu lệnh kết quả này ko ạ? e ko hiểu tại sao lại làm thế
Sub PhieuLuong_NoiDung()
'B1
'Sheet2.Range("F6").Value = Sheet3.Range("E26").Value
'B2
Dim dong_BD As Long, dong_KT As Long
dong_BD = Application.WorksheetFunction.Match(Sheet2.Range("I2"), Sheet3.Range("A6:A105"), 0) + 5
dong_KT = Application.WorksheetFunction.CountIf(Sheet3.Range("A6:A105"), Sheet2.Range("I2")) + dong_BD - 1
1.
Sheet2.Range("F6").Value = Sheet3.Range("E26").Value
có nghĩa là lấy dữ liệu ở ô E26 trong sheet3 đưa vào vị trí ô F6 trong Sheet2
2.
Dim dong_BD As Long, dong_KT As Long
là cú pháp khai báo biến, dùng làm biến đại diện cho các giá trị dòng bắt đầu, dòng kết thúc
3.
dong_BD = Application.WorksheetFunction.Match(Sheet2.Range("I2"), Sheet3.Range("A6:A105"), 0) + 5
có nghĩa là xác định giá trị cho biến dong_BD (dòng đầu tiên có dữ liệu) bằng hàm MATCH trong VBA. Match này là tìm theo giá trị ô I2 tại sheet2 trong vùng A6:A105 tại sheet3, kết quả hàm MATCH sẽ cộng thêm 5 (vì vùng match tính từ dòng 6 trở đi, do đó phải cộng thêm 5 để tìm đúng số dòng)
4.
dong_KT = Application.WorksheetFunction.CountIf(Sheet3.Range("A6:A105"), Sheet2.Range("I2")) + dong_BD - 1
xác định dòng kết thúc (dòng cuối có dữ liệu). Dòng cuối xác định bằng cách lấy dòng đầu cộng với số dòng có dữ liệu (xác định bởi hàm COUNTIF). Phải trừ đi 1 vì đây là nguyên tắc xác định phạm vi bên trong 2 mốc (khoảng cách = dòng cuối - dòng đầu - 1)
---
Bạn hãy hình dung 1 bảng tính mà không rõ nó nằm ở vị trí nào trong sheet (vì có thể thêm dòng, thêm nội dung vào bảng... khiến vị trí bảng và giới hạn bảng thay đổi). Làm thế nào để định vị được bảng này? đó là tìm các điểm đầu, điểm cuối của bảng. Nó chính là dòng đầu có dữ liệu và dòng cuối có dữ liệu.
Em cảm ơn thầy