Chào các bạn, mình đang tập viết một ứng dụng nhỏ trên excel. Trong quá trình viết code mình gặp phải vấn đến khúc mắc bên dưới mong các bạn giúp mình lý giải.
Mình có 2 sheet là sheet TIMESHEET dùng để ghi lại dữ liệu ngày nghỉ, và sheet CONFIRM dùng để xác nhận dữ liệu đã ghi lại.
Đoạn code dưới của mình hoạt động bằng cách, nó sẽ đếm lại số dòng có dữ liệu bên cột B và trả về dữ liệu tương ứng ở cột A.
Câu hỏi của mình: Vì sao mình dùng một logic chung để viết mà ở sheet TIMESHEET hiện thị đúng 1, 2, 3. Trong khi ở sheet CONFIRM lại hiện thị 1, 2, 3, 4.
Private Sub indexROW()
Dim rng, icnt, jcnt As Integer
Const TITLE1 As Integer = 21, TITLE2 As Integer = 2
rng = Range(“B22”).End(xlDown).Row
With Worksheets("TIMESHEET")
If .Range("B23").Value = "" And .Range("B24").Value = "" Then
.Range("A22").Value = 1
ElseIf .Range("B23").Value <> "" And .Range("B24").Value = "" Then
.Range("A22").Value = 1
.Range("A23").Value = 2
Else
For icnt = 22 To rng
.Range("A" & icnt).Value = icnt - TITLE1
Next
End If
End With
rng = Range("B3").End(xlDown).Row
With Worksheets("CONFIRM")
If .Range("B4").Value = "" And .Range("B5").Value = "" Then
.Range("A3").Value = 1
ElseIf .Range("B4").Value <> "" And .Range("B5").Value = "" Then
.Range("A3").Value = 1
.Range("A4").Value = 2
Else
For icnt = 3 To rng
.Range("A" & icnt).Value = icnt - TITLE2
Next
End If
End With
End Sub