Nhờ sửa Code VBA liên quan đến đánh số Serial tăng dần khi in chỉ thị SX.

Liên hệ QC

Thóc Sama

_/_/_/_/_/_/_/
Tham gia
23/7/16
Bài viết
565
Được thích
798
Giới tính
Nam
Nghề nghiệp
何でもする
Chào Anh/Chị trên diễn đàn!
Cám ơn Anh/Chị ghé qua và mong Anh/Chị giúp em với ạ.
File của em gồm 5 Sheet
1626581415605.png
trong đó: S122 & S123 là mã hàng độc lập.
Ở Sheet PRINT mục CS (ở mỗi mã hàng) thì gấp 3 lần mục PS
1626581608458.png
Cái này có nghĩa khi ở cột số lượng in sheet Print cell E9 nhập 3 ->E10 là 1 và ấn in thì ta in được 3 sheet CS và cell màu vàng phía dưới tăng tịnh tiến (CS122-012001~3 Và nếu nhập là 6 thì sẽ in đến 6...)
1626581841751.png
VÀ ĐIỀU EM NHỜ ANH/CHỊ GIÚP ĐỠ LÀ SỬA CODE DÙM EM ĐỂ:
khi in ra sheet PS phần ô tô vàng phía dưới số Serial tăng tự động theo như mô tả phía dưới
1626582472630.png
mục đích là giảm thiểu rủi ro ghi chép hoặc nhập sai trong quá trình thực hiện.
Cảm ơn Anh/Chị đã ghé qua và rất mong nhận được sự giúp đỡ từ phía Anh/Chị ạ!
Trân trọng!
 

File đính kèm

  • VBA IN THE QLSX.xlsm
    85.7 KB · Đọc: 10
Chào Anh/Chị trên diễn đàn!
Cám ơn Anh/Chị ghé qua và mong Anh/Chị giúp em với ạ.
File của em gồm 5 Sheet
View attachment 262637
trong đó: S122 & S123 là mã hàng độc lập.
Ở Sheet PRINT mục CS (ở mỗi mã hàng) thì gấp 3 lần mục PS
View attachment 262638
Cái này có nghĩa khi ở cột số lượng in sheet Print cell E9 nhập 3 ->E10 là 1 và ấn in thì ta in được 3 sheet CS và cell màu vàng phía dưới tăng tịnh tiến (CS122-012001~3 Và nếu nhập là 6 thì sẽ in đến 6...)
View attachment 262641
VÀ ĐIỀU EM NHỜ ANH/CHỊ GIÚP ĐỠ LÀ SỬA CODE DÙM EM ĐỂ:
khi in ra sheet PS phần ô tô vàng phía dưới số Serial tăng tự động theo như mô tả phía dưới
View attachment 262642
mục đích là giảm thiểu rủi ro ghi chép hoặc nhập sai trong quá trình thực hiện.
Cảm ơn Anh/Chị đã ghé qua và rất mong nhận được sự giúp đỡ từ phía Anh/Chị ạ!
Trân trọng!
Có thể OT chưa hiểu hết ý của Bạn, Bạn thử hàm này xem được không:
Mã:
Public Function MaChiThi(rPrint As Range, rChiThi As Range, _
    ByVal kyhieuTach As String, n As Integer) As String
    'rPrint:        Vung sheet print cot Item & so luong
    'rChiThi:       o chi thi(lot) ban dau
    'kyhieuTach:    ky tu phan tach giua item va serial
    'n:             so thu tu machithi(lot)
    
    Dim data(), i As Long, tmp, so As Long, cong As Long
    Dim str As String, itemNo As String
    data = rPrint.Value:
    tmp = Split(rChiThi.Value, kyhieuTach)
    n = n - 1
    For i = 1 To UBound(data, 1)
        itemNo = data(i, 1)
        If itemNo = tmp(0) Then
            so = data(i, 2)
            If so > 1 Then cong = so / 3 + 1 Else cong = 0
            If cong <> Int(cong) Then cong = 0
            MaChiThi = itemNo & "-" & Format(tmp(1) + cong + n, "000000")
        End If
    Next i
End Function
 

File đính kèm

  • VBA IN THE QLSX.xlsm
    86.3 KB · Đọc: 12
Lần chỉnh sửa cuối:
Upvote 0
Có thể OT chưa hiểu hết ý của Bạn, Bạn thử hàm này xem được không:
Mã:
Public Function MaChiThi(rPrint As Range, rChiThi As Range, _
    ByVal kyhieuTach As String, n As Integer) As String
    'rPrint:        Vung sheet print cot Item & so luong
    'rChiThi:       o chi thi(lot) ban dau
    'kyhieuTach:    ky tu phan tach giua item va serial
    'n:             so thu tu machithi(lot)
   
    Dim data(), i As Long, tmp, so As Long, cong As Long
    Dim str As String, itemNo As String
    data = rPrint.Value:
    tmp = Split(rChiThi.Value, kyhieuTach)
    n = n - 1
    For i = 1 To UBound(data, 1)
        itemNo = data(i, 1)
        If itemNo = tmp(0) Then
            so = data(i, 2)
            If so > 1 Then cong = so / 3 + 1 Else cong = 0
            If cong <> Int(cong) Then cong = 0
            MaChiThi = itemNo & "-" & Format(tmp(1) + cong + n, "000000")
        End If
    Next i
End Function
Rất cảm ơn Mr/Ms @Hoàng Nhật Phương
Em check xong rồi sẽ phản hồi Anh/Chị nhé!
 
Upvote 0
Có thể OT chưa hiểu hết ý của Bạn, Bạn thử hàm này xem được không:
Mã:
Public Function MaChiThi(rPrint As Range, rChiThi As Range, _
    ByVal kyhieuTach As String, n As Integer) As String
    'rPrint:        Vung sheet print cot Item & so luong
    'rChiThi:       o chi thi(lot) ban dau
    'kyhieuTach:    ky tu phan tach giua item va serial
    'n:             so thu tu machithi(lot)
   
    Dim data(), i As Long, tmp, so As Long, cong As Long
    Dim str As String, itemNo As String
    data = rPrint.Value:
    tmp = Split(rChiThi.Value, kyhieuTach)
    n = n - 1
    For i = 1 To UBound(data, 1)
        itemNo = data(i, 1)
        If itemNo = tmp(0) Then
            so = data(i, 2)
            If so > 1 Then cong = so / 3 + 1 Else cong = 0
            If cong <> Int(cong) Then cong = 0
            MaChiThi = itemNo & "-" & Format(tmp(1) + cong + n, "000000")
        End If
    Next i
End Function
Mr/Ms @Hoàng Nhật Phương
Em check thấy cũng gần được rồi ạ
Nhờ Anh/Chị sửa lại công thức giúp em một chút
ví dụ như bên sheet PRINT mình nhập số lượng của CS122 là 3
PS122 là 1 (theo đúng yêu cầu Code cũ) như hình dưới
1626695280190.png
Thì ở sheet PS122 ở các ô J30, J42, J54 phần đuôi phải là ....01, ...02, ...03 mới đúng ạ. (trường hợp tỷ lệ in là 6:2 thì sheet PS khi in ra sẽ lên đến ...06)
1626695144496.png
Nhờ Anh/Chị xem tiếp dùm em với nhé!
Trân trọng cảm ơn Anh/Chị!
 
Upvote 0
Mr/Ms @Hoàng Nhật Phương
Em check thấy cũng gần được rồi ạ
Nhờ Anh/Chị sửa lại công thức giúp em một chút
ví dụ như bên sheet PRINT mình nhập số lượng của CS122 là 3
PS122 là 1 (theo đúng yêu cầu Code cũ) như hình dưới
View attachment 262711
Thì ở sheet PS122 ở các ô J30, J42, J54 phần đuôi phải là ....01, ...02, ...03 mới đúng ạ. (trường hợp tỷ lệ in là 6:2 thì sheet PS khi in ra sẽ lên đến ...06)
View attachment 262710
Nhờ Anh/Chị xem tiếp dùm em với nhé!
Trân trọng cảm ơn Anh/Chị!

Chào Bạn, Bạn ơi không phải khởi đầu là PS link với CS nếu số Print là 1 đến 3 thì nó xuất phát CS , còn bằng 6 thì sẽ là 4 sao? Hic.

1626695965461.png
 
Upvote 0
Chào Bạn, Bạn ơi không phải khởi đầu là PS link với CS nếu số Print là 1 đến 3 thì nó xuất phát CS , còn bằng 6 thì sẽ là 4 sao? Hic.

Chào Bạn, Bạn ơi không phải khởi đầu là PS link với CS nếu số Print là 1 đến 3 thì nó xuất phát CS , còn bằng 6 thì sẽ là 4 sao? Hic.

View attachment 262712
Dạ, phần này e xin giải thích lại một chút nhé!
số tờ in sheet PS bằng số lượng đăng ký bên sheet PRINT (phần này nhập tay). ví dụ như bên sheet PRINT đăng ký là 9 tương ứng CS sẽ in ra 9*3=27 tờ (số Serial tăng từ ...001 đến ...027) và ở 9 tờ sheet PS in ra thì: ở ô J30, J42, J54 phần đuôi sẽ tăng theo quy luật như sau
tờ thứ nhất: ô J30...001, ô J42...002, ô J54...003
tờ thứ 2: ô J30...004, ô J42...005, ô J54...006
...
tờ thứ 9: ô J30..025, ô J40...026, ô J54...027
Thế đấy Anh/Chị ạ!
Rất mong Anh/Chị tiếp tục giúp e ạ!
 
Upvote 0
Mông-xừ/Ma-đàm/Ma-moa-den OT mần ơn xác định giới tính, để người ta cứ réo mít-tơ/mì-sợi mãi.
Dạ Bác, trên diễn đàn không phân biệt được tuổi tác nên việc xưng hô như thế nào cũng rất khó khăn Bác ạ.
Do vậy @THÓC SAMA , Bạn cứ xưng hô với OT Tôi & và Bạn là được rồi.
 
Upvote 0
Dạ Bác, trên diễn đàn không phân biệt được tuổi tác nên việc xưng hô như thế nào cũng rất khó khăn Bác ạ.
Do vậy @THÓC SAMA , Bạn cứ xưng hô với OT Tôi & và Bạn là được rồi.
Chỉ có 1 số ngưởi biết được "OT" và "Hoàng Nhật Phương" là ai.
Hoàng Nhật Phương viết bài mà tự xưng "OT" chả ai hiểu chuyện gì đâu. Thà viết tắt "HNP" họa may nhiều người hiểu.
 
Upvote 0
Chỉ có 1 số ngưởi biết được "OT" và "Hoàng Nhật Phương" là ai.
Hoàng Nhật Phương viết bài mà tự xưng "OT" chả ai hiểu chuyện gì đâu. Thà viết tắt "HNP" họa may nhiều người hiểu.
Con chào Thầy vâng con sẽ chú ý ạ. (Phương là tên con gái của con, còn Thơ là tên của con Thầy ạ)
 
Upvote 0
Con chào Thầy vâng con sẽ chú ý ạ. (Phương là tên con gái của con, còn Thơ là tên của con Thầy ạ)
Tôi và một số thành viên thì biết "Nguyễn Hoàng Oanh Thơ", Nguyễn Hoàng Nhật Phương", rồi "Hoàng Nhật Phương", nhưng "OT" thì thuộc diện "hiện hành", không phổ biến..
 
Upvote 0
Tôi và một số thành viên thì biết "Nguyễn Hoàng Oanh Thơ", Nguyễn Hoàng Nhật Phương", rồi "Hoàng Nhật Phương", nhưng "OT" thì thuộc diện "hiện hành", không phổ biến..
Dạ vâng Thầy con sẽ chú ý không viết tắt nữa ạ.
---------------
Dạ, phần này e xin giải thích lại một chút nhé!
số tờ in sheet PS bằng số lượng đăng ký bên sheet PRINT (phần này nhập tay). ví dụ như bên sheet PRINT đăng ký là 9 tương ứng CS sẽ in ra 9*3=27 tờ (số Serial tăng từ ...001 đến ...027) và ở 9 tờ sheet PS in ra thì: ở ô J30, J42, J54 phần đuôi sẽ tăng theo quy luật như sau
tờ thứ nhất: ô J30...001, ô J42...002, ô J54...003
tờ thứ 2: ô J30...004, ô J42...005, ô J54...006
...
tờ thứ 9: ô J30..025, ô J40...026, ô J54...027
Thế đấy Anh/Chị ạ!
Rất mong Anh/Chị tiếp tục giúp e ạ!

Ở đây tôi có thấy Bạn đề cập phần đuôi lấy từ bên sheet khác, nhưng phía trên lại thấy bạn là kiểu auto số thứ tự, thực sự có chỗ này tôi chưa hiểu lắm.

1626753920343.png
 
Upvote 0
Tôi và một số thành viên thì biết "Nguyễn Hoàng Oanh Thơ", Nguyễn Hoàng Nhật Phương", rồi "Hoàng Nhật Phương", nhưng "OT" thì thuộc diện "hiện hành", không phổ biến..
Vậy nickname đó là của chị Nguyễn Hoàng Oanh Thơ lúc trước hả thầy?
 
Upvote 0
Dạ vâng Thầy con sẽ chú ý không viết tắt nữa ạ.
---------------


Ở đây tôi có thấy Bạn đề cập phần đuôi lấy từ bên sheet khác, nhưng phía trên lại thấy bạn là kiểu auto số thứ tự, thực sự có chỗ này tôi chưa hiểu lắm.

View attachment 262734
Vâng, khó hiểu thực sự bác ha!
Lúc đầu em xem e cũng mông lung lắm lắm. Về cơ bản là theo 2 logic bác nói ở trên đấy ạ! mỗi lần in sẽ ra n[sheet PS] và 3n[sheet CS]
số thứ tự Lot Number mình đang cần Code sẽ tăng lần lượt đến 3n ở ô J30, J42, J54
Tức là phần đuôi phía trên được tăng dần như e giải thích ở #6 ạ.
Trân trọng!
 
Upvote 0
Vâng, khó hiểu thực sự bác ha!
Lúc đầu em xem e cũng mông lung lắm lắm. Về cơ bản là theo 2 logic bác nói ở trên đấy ạ! mỗi lần in sẽ ra n[sheet PS] và 3n[sheet CS]
số thứ tự Lot Number mình đang cần Code sẽ tăng lần lượt đến 3n ở ô J30, J42, J54
Tức là phần đuôi phía trên được tăng dần như e giải thích ở #6 ạ.
Trân trọng!
Bạn thử lại xem đúng ý không:
Mã:
Public Function MaChiThiSX(rPrint As Range, rChiThi As Range, _
    ByVal kyhieuTach As String, Optional ByVal chithitruoc As Variant = "") As String
    'rPrint:        Vung sheet print cot Item & so luong
    'rChiThi:       o chi thi(lot) ban dau
    'kyhieuTach:    ky tu phan tach giua item va serial
    'chithitruoc:   so thu tu machithi(lot) cua o truoc co the co hoac ko, neu o dau tien khoong can
   
    Dim data(), i As Long, tmp, so As Long, cong As Long
    Dim str As String, itemNo As String, n As Integer
    data = rPrint.Value:
    tmp = Split(rChiThi.Value, kyhieuTach)
   
    If TypeName(chithitruoc) = "Range" Then
        If chithitruoc.Value <> Empty Then
            n = Right(chithitruoc.Value, 3) + 1
        Else
            n = 1
        End If
    Else
        n = 1
    End If
    For i = 1 To UBound(data, 1)
        itemNo = data(i, 1)
        If itemNo = tmp(0) Then
            so = data(i, 2)
            If so > 1 Then cong = so / 3 + 1 Else cong = 0
            If cong <> Int(cong) Then cong = 0
            MaChiThiSX = itemNo & "-" & Left(tmp(1), 3) & Format(cong + n, "000000")
        End If
    Next i
End Function

hic mà trong chủ đề này toàn là các bậc tiền bối kiến thức sâu rộng mà để mỗi mình tự bơi thế này vậy T_T
Bài đã được tự động gộp:

Dạ, phần này e xin giải thích lại một chút nhé!
..đăng ký là 9 tương ứng CS sẽ in ra 9*3=27 tờ (số Serial tăng từ ...001 đến ...027) và ở 9 tờ sheet PS in ra thì: ở ô
Híc còn chỗ này nữa Bạn, ở trên và ở khung màu vàng bên dưới (nó có gì đó hơi mâu thuẫn thì phải) ?
1626760054521.png
 

File đính kèm

  • VBA IN THE QLSX.xlsm
    85.8 KB · Đọc: 4
Lần chỉnh sửa cuối:
Upvote 0
Bạn thử lại xem đúng ý không:
Mã:
Public Function MaChiThiSX(rPrint As Range, rChiThi As Range, _
    ByVal kyhieuTach As String, Optional ByVal chithitruoc As Variant = "") As String
    'rPrint:        Vung sheet print cot Item & so luong
    'rChiThi:       o chi thi(lot) ban dau
    'kyhieuTach:    ky tu phan tach giua item va serial
    'chithitruoc:   so thu tu machithi(lot) cua o truoc co the co hoac ko, neu o dau tien khoong can
   
    Dim data(), i As Long, tmp, so As Long, cong As Long
    Dim str As String, itemNo As String, n As Integer
    data = rPrint.Value:
    tmp = Split(rChiThi.Value, kyhieuTach)
   
    If TypeName(chithitruoc) = "Range" Then
        If chithitruoc.Value <> Empty Then
            n = Right(chithitruoc.Value, 3) + 1
        Else
            n = 1
        End If
    Else
        n = 1
    End If
    For i = 1 To UBound(data, 1)
        itemNo = data(i, 1)
        If itemNo = tmp(0) Then
            so = data(i, 2)
            If so > 1 Then cong = so / 3 + 1 Else cong = 0
            If cong <> Int(cong) Then cong = 0
            MaChiThiSX = itemNo & "-" & Left(tmp(1), 3) & Format(cong + n, "000000")
        End If
    Next i
End Function

hic mà trong chủ đề này toàn là các bậc tiền bối công lực thâm hậu mà để mỗi mình tự bơi thế này vậy T_T
Bài đã được tự động gộp:


Híc còn chỗ này nữa Bạn, ở trên và ở khung màu vàng bên dưới (nó có gì đó hơi mâu thuẫn thì phải) ?
View attachment 262739
Thực sự mất thời gian của Bác quá!
Sheet CS thì chạy đúng rồi bác, nhưng PS e test thì vẫn chưa được.
vd: e set số lượng in là 9:3 (9 tờ CS tương đương là 3 tờ PS) thì Số Serial của CS đã chạy đúng rồi.
Tuy nhiên với 3 tờ PS thì:
Tờ đầu tiên J30, J42, J54 số serial có đuôi lần lượt phải là...001, ...002, ...003
Tờ thứ 2: J30, J42, J54 số serial có đuôi lần lượt phải là...004, ...005, ...006
Tờ thứ 3: J30, J42, J54 số serial có đuôi lần lượt phải là...007, ...008, ...009
quy luật là thế bác ạ!
Trân trọng!
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom