Số chứng từ tự động

Liên hệ QC

Tuấn Giang

Thành viên chính thức
Tham gia
19/7/06
Bài viết
80
Được thích
24
Hi all,

Cho em hỏi, em nhập liệu bằng Userform. Có cách nào để số chứng từ tự động nhảy khi mình chọn loại chứng từ không các bác?

Ví dụ: Nếu em đã có các chứng từ: PN-1001 -> PN-1005, PX-1001 -> PX-1014 chẳng hạn. Khi em chọn Loại CT là PN thì ở Tab Số CT nó sẽ tự động nhảy số 1006, hay nếu chọn PX thì nó sẽ nhảy số 1015.

Rất mong các bác chỉ giúp.

Thanks and Best Regards,
 

File đính kèm

Nhân tiện các bác cho em hỏi luôn. Khi em chạy 1 file có VBA, nó báo lỗi như hình đính kèm.

Đó là lỗi gì vậy ạ? Cách khắc phục ra sao hả các bác?

Thanks,
 

File đính kèm

Upvote 0
Sao không đưa file để làm luôn, code thiếu kết thúc thì phải.
Đưa hình vậy mất công thiết kế
Tôi chỉ biết làm theo cách cells(i,j)={Max(IF())}
Gán ngược lại trong form.
Tôi cũng muốn hỏi liệu có công thức nào thay thế {Max(IF())}, VBA cũng được. Chớ làm {max(if(left(SoCT,3)="PT",value(right(soct,3)),0))} dài mà nặng.
To :DMT
File của bạn đâu có tạo số CT max
 
Lần chỉnh sửa cuối:
Upvote 0
- Lần sau nhớ đưa file lên nha bạn !!!
 

File đính kèm

Upvote 0
Cảm ơn DMT,

Nhưng ý của em không phải thế. Bác ThuNghi hiểu ý của em rồi đó. Em cũng dùng cách đó để làm trên Excel. Nhưng VBA thì em chịu không biết làm sao mới được?

Với lại dùng {Max(IF())} thì nặng lắm.

Không biết có cách nào khác không nhỉ?

File đó ở đây. Các bác xem dùm nhé.

Thanks,
 
Lần chỉnh sửa cuối:
Upvote 0
Dùng {Max(IF())} trên form thì không nặng lắm đâu, chỉ gán 1 lần cho 1 cell khi nhập mới. Sau đó xóa cell.
Cells(1,1).value ={Max(IF())}
SoCt.value = Cells(1,1).value
Cells(1,1).ClearContents
 
Upvote 0
ThuNghi đã viết:
Dùng {Max(IF())} trên form thì không nặng lắm đâu, chỉ gán 1 lần cho 1 cell khi nhập mới. Sau đó xóa cell.
Cells(1,1).value ={Max(IF())}
SoCt.value = Cells(1,1).value
Cells(1,1).ClearContents

Hình như vẫn chưa giải quyết được vấn đề bác ạ. Ở file đính kèm trên em có tách riêng Loại CT và Số CT. Ý em là: khi chọn Loại CT: (PN chẳng hạn) thì Tab Số CT sẽ tự động nhảy cơ.

Mong các bác chỉ giúp.
 
Upvote 0
Bạn tham khảo đoạn code này trong form

Private Sub LoaiCT_AfterUpdate()
On Error Resume Next
S100.Range("AB1").Value = Me.LoaiCT.Value
S100.Calculate
Me.SoCT.Value = Me.LoaiCT.Value & "-" & Format(S100.Range("AB2").Value, "0000")
..........................

End Sub

Công thức ở ô AB2 là:
{=MAX(IF(LEFT(DataCT,2)=AB1,VALUE(MID(DataCT,4,4)),0))+1}

Cụ thể là gán giá trị cuả Loại CT và ô AB1 cuả Sh S100 rồi bắt Ex tự động tính toán và gán số CT vào ô AB2, sau đó hiển thị lên form
Chú ý DataCT là name cuả cột Số CT trong Sheet Chứng từ, là nơi chứa dữ liệu từ trên form đưa xuống bảng tính
 
Lần chỉnh sửa cuối:
Upvote 0
Sub TinhMax()
Dim i As Integer
MyArray = Array(1, 2, 3, 4, 4, 4, 5, 5, 6, 7, 7, 8, 8)
i = WorksheetFunction.Max(MyArray)
End Sub
Các bạn có thể chuyển hộ {max(if())} sang VBA.
Ta thấy Array trên là value(right(SoCTi,4))???
Làm thế nào đưa value(right(SoCTi,4)) thành 1 array thì có vẻ đơn giản.
Xin cám ơn!
 
Upvote 0
Cảm ơn các bác, em đã làm đượ rồi.--=0
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom