Code in phiếu hàng loạt!!!

Liên hệ QC

NH_DK

Let's patience
Tham gia
29/7/10
Bài viết
865
Được thích
1,203
Nghề nghiệp
Kế toán
Em có file in phiếu thu chi hàng loạt. Nhưng không hiểu sao code này lỗi chỗ nào mà vẫn không in được theo ý. Em đưa lên đây nhờ AC xem dùm em.
Download
 
Em sửa 1 chút từ:

Mã:
...................................        
    For i = Tuso To Denso
Unload Mau_In
        Set MyR = S2.Range(S2.[B3], S2.[B65000].End(xlUp))
..............................................................................

Thành:

Mã:
.........................
Unload Mau_In
For i = Tuso To Denso
Set MyR = S2.Range(S2.[B3], S2.[B65000].End(xlUp))
..........................
 
Upvote 0
Em sửa 1 chút từ:

Mã:
...................................        
    For i = Tuso To Denso
Unload Mau_In
        Set MyR = S2.Range(S2.[B3], S2.[B65000].End(xlUp))
..............................................................................

Thành:

Mã:
.........................
Unload Mau_In
For i = Tuso To Denso
Set MyR = S2.Range(S2.[B3], S2.[B65000].End(xlUp))
..........................
Thêm nữa, mấu chốt vấn đề là phải sửa câu If sRng Is Nothing Then thành If Not sRng Is Nothing Then
Tóm lại, sau khi sửa thì code sẽ là như vầy:
PHP:
Private Sub cmdIn_Click()
    Dim sRng As Range, i As Integer
    If Not (IsNumeric(Tuso) And IsNumeric(Denso)) Then
        MsgBox "Tu so phai la kieu so"
        Tuso.SetFocus
        Exit Sub
    End If
    If Tuso > Denso Then
        MsgBox "Tu so phai nho hon hoac bang Den so"
        Exit Sub
    End If
    Unload Mau_In
    For i = Tuso To Denso
        Set sRng = S2.[B:B].Find("PT" & i)
        MsgBox sRng.Address
        If Not sRng Is Nothing Then
            With S4
                .Range("D5") = sRng.Offset(, 1)
                .Range("C6") = sRng.Offset(, 8)
                .Range("B7") = sRng.Offset(, 9)
                .Range("B8") = sRng.Offset(, 10)
                .Range("B9") = sRng.Offset(, 6) + sRng.Offset(1, 6)
                .Range("B11") = sRng.Offset(, 11)
                .Range("G11") = sRng.Offset(, 12)
                .Range("J6") = sRng
                .Range("J7") = sRng.Offset(, 4)
                .Range("J8") = sRng.Offset(, 5) & "-" & sRng.Offset(1, 5)
            End With
            S4.PrintOut
        End If
    Next i
End Sub
 
Upvote 0
Thêm nữa, mấu chốt vấn đề là phải sửa câu If sRng Is Nothing Then thành If Not sRng Is Nothing Then
Tóm lại, sau khi sửa thì code sẽ là như vầy:
PHP:
Private Sub cmdIn_Click()
    Dim sRng As Range, i As Integer
    If Not (IsNumeric(Tuso) And IsNumeric(Denso)) Then
        MsgBox "Tu so phai la kieu so"
        Tuso.SetFocus
        Exit Sub
    End If
    If Tuso > Denso Then
        MsgBox "Tu so phai nho hon hoac bang Den so"
        Exit Sub
    End If
    Unload Mau_In
    For i = Tuso To Denso
        Set sRng = S2.[B:B].Find("PT" & i)
        MsgBox sRng.Address
        If Not sRng Is Nothing Then
            With S4
                .Range("D5") = sRng.Offset(, 1)
                .Range("C6") = sRng.Offset(, 8)
                .Range("B7") = sRng.Offset(, 9)
                .Range("B8") = sRng.Offset(, 10)
                .Range("B9") = sRng.Offset(, 6) + sRng.Offset(1, 6)
                .Range("B11") = sRng.Offset(, 11)
                .Range("G11") = sRng.Offset(, 12)
                .Range("J6") = sRng
                .Range("J7") = sRng.Offset(, 4)
                .Range("J8") = sRng.Offset(, 5) & "-" & sRng.Offset(1, 5)
            End With
            S4.PrintOut
        End If
    Next i
End Sub
Cám ơn các anh. Nhưng cho em hỏi thêm chút nữa nhé! Nếu in như vậy thì ô D5 của phiếu không hiện rõ ngày (toàn hiện ######## thui)? Vậy phải sửa định dạng ra sao?
 
Upvote 0
Cám ơn các anh. Nhưng cho em hỏi thêm chút nữa nhé! Nếu in như vậy thì ô D5 của phiếu không hiện rõ ngày (toàn hiện ######## thui)? Vậy phải sửa định dạng ra sao?
Lạ nhỉ, anh thấy vẫn bình thường, không vấn đề gì cả. Em kéo rộng cột D ra xem sao.
Trong code trên, em bỏ câu này nhé: MsgBox sRng.Address (tại lúc làm xem thử có tìm thấy không, sau đó lại quên xóa).
 
Upvote 0
Lạ nhỉ, anh thấy vẫn bình thường, không vấn đề gì cả. Em kéo rộng cột D ra xem sao.
Trong code trên, em bỏ câu này nhé: MsgBox sRng.Address (tại lúc làm xem thử có tìm thấy không, sau đó lại quên xóa).

Anh ơi, em test lại được rùi ah. Thanks a lot!
 
Upvote 0
Em đang tự học VBA mong anh chị giải thích rõ ràng hơn đoạn code trong ví dụ trên được không ạ. Thanks GPE

Private Sub cmdIn_Click()
Dim sRng As Range, i As Integer
If Not (IsNumeric(Tuso) And IsNumeric(Denso)) Then
MsgBox
"Tu so phai la kieu so"
Tuso.SetFocus
Exit Sub
End
If
If
Tuso > Denso Then
MsgBox
"Tu so phai nho hon hoac bang Den so"
Exit Sub
End
If
Unload Mau_In
For i = Tuso To Denso
Set sRng
= S2.[B:B].Find("PT" & i)
MsgBox sRng.Address
If Not sRng Is Nothing Then
With S4
.Range("D5") = sRng.Offset(, 1)
.
Range("C6") = sRng.Offset(, 8)
.
Range("B7") = sRng.Offset(, 9)
.
Range("B8") = sRng.Offset(, 10)
.
Range("B9") = sRng.Offset(, 6) + sRng.Offset(1, 6)
.
Range("B11") = sRng.Offset(, 11)
.
Range("G11") = sRng.Offset(, 12)
.
Range("J6") = sRng
.Range("J7") = sRng.Offset(, 4)
.
Range("J8") = sRng.Offset(, 5) & "-" & sRng.Offset(1, 5)
End With
S4
.PrintOut
End
If
Next i
End Sub

Cụ thể là:
sRng là gì? đoạn code nào trộn dữ liệu ở sheet CSDL vào sheet P.THU, còn những vấn đề khác e chưa biết nên chưa có thể hỏi thêm được ah.
 
Lần chỉnh sửa cuối:
Upvote 0
Em đang tự học VBA mong anh chị giải thích rõ ràng hơn đoạn code trong ví dụ trên được không ạ. Thanks GPE

Private Sub cmdIn_Click()
Dim sRng As Range, i As Integer
If Not (IsNumeric(Tuso) And IsNumeric(Denso)) Then
MsgBox
"Tu so phai la kieu so"
Tuso.SetFocus
Exit Sub
End
If
If
Tuso > Denso Then
MsgBox
"Tu so phai nho hon hoac bang Den so"
Exit Sub
End
If
Unload Mau_In
For i = Tuso To Denso
Set sRng
= S2.[B:B].Find("PT" & i)
MsgBox sRng.Address
If Not sRng Is Nothing Then
With S4
.Range("D5") = sRng.Offset(, 1)
.
Range("C6") = sRng.Offset(, 8)
.
Range("B7") = sRng.Offset(, 9)
.
Range("B8") = sRng.Offset(, 10)
.
Range("B9") = sRng.Offset(, 6) + sRng.Offset(1, 6)
.
Range("B11") = sRng.Offset(, 11)
.
Range("G11") = sRng.Offset(, 12)
.
Range("J6") = sRng
.Range("J7") = sRng.Offset(, 4)
.
Range("J8") = sRng.Offset(, 5) & "-" & sRng.Offset(1, 5)
End With
S4
.PrintOut
End
If
Next i
End Sub

Cụ thể là:
sRng là gì? đoạn code nào trộn dữ liệu ở sheet CSDL vào sheet P.THU, còn những vấn đề khác e chưa biết nên chưa có thể hỏi thêm được ah.
1. Bạn chen ngang topic., bạn muốn hỏi bạn tự tạo topic để hỏi
2. bạn muốn mọi người giải thích code là giải thích tất cả hay sao?
 
Upvote 0
1. Bạn chen ngang topic., bạn muốn hỏi bạn tự tạo topic để hỏi
2. bạn muốn mọi người giải thích code là giải thích tất cả hay sao?

Cảm ơn anh viehoai đã câu trả lời cho bài trả lời của e. Em nghĩ topic này nằm trong chủ đề trung tâm giải thích code thì những ví dụ đưa ra để mọi người học tập và hiểu thì mới thực sự có ý nghĩ. Nếu chỉ để người hỏi biết thì diễn đàn sẽ không mang nhiều ý nghĩa.

Nếu muốn hỏi một vấn đề gì đó ta cũng tạo ra một topic thì diễn đàn không khác gì một thùng rác.

em đang học nên chỉ hỏi được những điều hạn chế trong những phạm vi hiểu biết của mình thôi. Nếu có anh chị nào đi trước có tinh thần chia sẻ kiến thức với mọi người để cùng tiến bộ thì em nghĩ giải thích được tất cả những code trên không phải là vô ích đâu anh viehoai ạ.
 
Upvote 0
Web KT
Back
Top Bottom