Chuyện gì xảy ra với cách đếm khi dùng chung cấu trúc code

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

À, mình tìm được nguyên nhân vấn đề rồi. Nhưng mình không biết cách xóa bài nên admin xóa hộ mình, hoặc để lại để bạn nào đó thử tìm câu trả lời :slight_smile:

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?