Code tự động đánh số và in ấn

Liên hệ QC

BuiQuangThuan

❆❆❆❆❆❆❆❆❆❆❆❆
Tham gia
17/12/10
Bài viết
2,464
Được thích
2,919
Giới tính
Nam
Chào các thầy cô. Em có cái form in nhãn.
Còn 1 số chỗ do trình độ còn kém nên nhờ các thầy cô hỗ trợ với ạ
1576899278334.png
Mong muốn là khi điền dữ liệu vào phần In từ số... đến số.... và kích vào nút IN NHÃN như hình trên thì nó sẽ tự động điền các số thứ tự tăng dần vào các khu khoanh đỏ trên sheets form rồi thực hiện in ra.
Ngoài ra nhờ các anh chị, thầy cô xem giúp những gì em viết. có cần cải tiến hoặc đặt điều kiện gì để tránh việc sai sót không ạ (vì khi lỡ in rồi mà sai sẽ rất tốn giấy ạ)
cám ơn các thầy cô nhiều
 

File đính kèm

  • UL 3718L 4007B1.xlsm
    49 KB · Đọc: 15
Thầy cô nào góp ý giúp em với ạ. Em cám ơn
 
Nhìn hình thì tôi đoán là số ở dưới lớn hơn số ở trên đúng 1 đơn vị. Đúng thế?

Ngoài ra tôi chưa hiểu cách điền số. Cái Từ Số và Đến Số là cho số ở trên, hay số ở trên chỉ chạy từ Từ Số tới (Đến số - 1)? Tôi cho vd. tôi có Từ số = 2, Đến số = 4. Vậy in:
1. 2 bản với 0002+0003 và 0003+0004 - số ở trên chỉ chạy từ Từ Số tới (Đến số - 1)
2. 3 bản với 0002+0003, 0003+0004, 0004+0005 - số ở trên chạy từ Từ Số tới Đến số

Tôi dùng trường hợp 1. Nếu trường hợp 2 thì tự sửa.
Mã:
Private Sub I_Nhan_Click()
Dim k As Long, tu As Long, den As Long
    If Not IsNumeric(Tu_So.Value) Then
        MsgBox "Hay nhap lai Tu So"
        Tu_So.SetFocus
    ElseIf Not IsNumeric(ToiSo.Value) Then
        MsgBox "Hay nhap lai Toi So"
        ToiSo.SetFocus
    Else
        tu = Int(Abs(Tu_So.Value))
        den = Int(Abs(ToiSo.Value))
        If tu >= den Then
            MsgBox "Hay nhap lai Tu So va/hoac ToiSo. Tu So phai < ToiSo"
        Else
            With ThisWorkbook.Worksheets("Form")
                For k = tu To den - 1
                    .Range("Q16").Value = Format(k, "'0000")
                    .Range("Q36").Value = Format(k + 1, "'0000")
                    .PrintOut
                Next k
            End With
        End If
    End If
End Sub

Tôi chỉ xem code trong Form. Code đúng phải là
Mã:
Private Sub S_Lot_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If Len(S_Lot) <> 7 Then
        MsgBox (" Hay kiem tra lai so LOT")
        Cancel = True
    End If
End Sub
 
Nhìn hình thì tôi đoán là số ở dưới lớn hơn số ở trên đúng 1 đơn vị. Đúng thế?

Ngoài ra tôi chưa hiểu cách điền số. Cái Từ Số và Đến Số là cho số ở trên, hay số ở trên chỉ chạy từ Từ Số tới (Đến số - 1)? Tôi cho vd. tôi có Từ số = 2, Đến số = 4. Vậy in:
1. 2 bản với 0002+0003 và 0003+0004 - số ở trên chỉ chạy từ Từ Số tới (Đến số - 1)
2. 3 bản với 0002+0003, 0003+0004, 0004+0005 - số ở trên chạy từ Từ Số tới Đến số
Cám ơn thầy ạ.
Đúng là số dưới bằng số trên +1 ạ
Em test thử thấy nó ra kết quả chưa theo ý muốn. Và em có sửa 1 chút code của thầy chỗ gạch chân.
Mã:
Private Sub I_Nhan_Click()
Dim k As Long, tu As Long, den As Long
    If Not IsNumeric(Tu_So.Value) Then
        MsgBox "Hay nhap lai Tu So"
        Tu_So.SetFocus
    ElseIf Not IsNumeric(ToiSo.Value) And ToiSo > 150 Then
        MsgBox "Hay nhap lai Toi So"
        ToiSo.SetFocus
    Else
        tu = Int(Abs(Tu_So.Value))
        den = Int(Abs(ToiSo.Value))
        If tu >= den Then
            MsgBox "Hay nhap lai Tu So va/hoac ToiSo. Tu So phai < ToiSo"
        Else
            With ThisWorkbook.Worksheets("Form")
                For k = tu To den Step 2
                    .Range("Q16").Value = Format(k, "'0000")
                    .Range("Q36").Value = Format(k + 1, "'0000")
                    .PrintOut
                Next k
                Unload Me
            End With
        End If
    End If
End Sub
Còn chỗ em bôi đỏ ấy ạ
Mã:
Step 2
. Muốn hỏi thầy 1 xíu. Sao khi em thêm điều kiện ToiSo >150 thì nó không có động tĩnh gì thầy nhỉ? Vì muốn giới hạn chỉ được in trong khoảng ấy chứ lỡ may thêm 1 số 0 nữa thì không biết bao nhiêu cánh rừng bị chặt.
Ngoài ra em muốn hỏi thầy và các bạn. Phần nhập ngày sản xuất ấy. Có cách nào để chống nhập sai không ạ.
 
Lần chỉnh sửa cuối:
Cám ơn thầy ạ.
Đúng là số dưới bằng số trên +1 ạ
Em test thử thấy nó ra kết quả chưa theo ý muốn. Và em có sửa 1 chút code của thầy chỗ gạch chân.
Mã:
Private Sub I_Nhan_Click()
Dim k As Long, tu As Long, den As Long
    If Not IsNumeric(Tu_So.Value) Then
        MsgBox "Hay nhap lai Tu So"
        Tu_So.SetFocus
    ElseIf Not IsNumeric(ToiSo.Value) And ToiSo > 150 Then
        MsgBox "Hay nhap lai Toi So"
        ToiSo.SetFocus
    Else
        tu = Int(Abs(Tu_So.Value))
        den = Int(Abs(ToiSo.Value))
        If tu >= den Then
            MsgBox "Hay nhap lai Tu So va/hoac ToiSo. Tu So phai < ToiSo"
        Else
            With ThisWorkbook.Worksheets("Form")
                For k = tu To den Step 2
                    .Range("Q16").Value = Format(k, "'0000")
                    .Range("Q36").Value = Format(k + 1, "'0000")
                    .PrintOut
                Next k
                Unload Me
            End With
        End If
    End If
End Sub
Còn chỗ em bôi đỏ ấy ạ
Mã:
Step 2
. Muốn hỏi thầy 1 xíu. Sao khi em thêm điều kiện ToiSo >150 thì nó không có động tĩnh gì thầy nhỉ? Vì muốn giới hạn chỉ được in trong khoảng ấy chứ lỡ may thêm 1 số 0 nữa thì không biết bao nhiêu cánh rừng bị chặt.
Ngoài ra em muốn hỏi thầy và các bạn. Phần nhập ngày sản xuất ấy. Có cách nào để chống nhập sai không ạ.
Bạn có nhìn thấy đỏ không? Trong thẻ CODE thì mầu không hiển thị đâu.
Thay AND bằng OR

Bạn thử đọc về IsDate xem. Còn muốn giới hạn ngày tháng trong một khoảng thì IF thôi.
Nhưng tôi đi ngủ đây. Đã 3 giờ sáng rồi.
 
Bạn có nhìn thấy đỏ không? Trong thẻ CODE thì mầu không hiển thị đâu.
Thay AND bằng OR

Bạn thử đọc về IsDate xem. Còn muốn giới hạn ngày tháng trong một khoảng thì IF thôi.
Nhưng tôi đi ngủ đây. Đã 4 giờ sáng rồi.
Dạ. Cám ơn thầy nhiều ạ.
Ủa. Thầy ở tọa độ nào mà giờ mới có 4h sáng.
Thôi. Phiền thầy rồi ạ.Thầy nghỉ đi.
Cám ơn thầy lần nữa ạ
 
Tôi ở Đông Âu. Mà tôi viết nhầm. Mới 3 giờ sáng thôi.
 
Web KT
Back
Top Bottom