giúp đỡ tạo function bằng vba

Liên hệ QC

light1203

Thành viên mới
Tham gia
27/6/11
Bài viết
4
Được thích
0
nhờ moin người giúp code tạo hàm tự động thêm số chứng từ khi biết loại chứng từ và ngày tháng theo định dạng, tháng 1 sẽ là "pn/01/000001" hết tháng sang tháng 2 lại bắt đầu bằng "pn/02/00001"
 

File đính kèm

nhờ moin người giúp code tạo hàm tự động thêm số chứng từ khi biết loại chứng từ và ngày tháng theo định dạng, tháng 1 sẽ là "pn/01/000001" hết tháng sang tháng 2 lại bắt đầu bằng "pn/02/00001"
Bạn thử:
PHP:
Function DanhSoPhieu(ByVal VungNgayThang As Range, ByVal VungSophieu As Range, _
        ByVal NgayChungtu, ByVal Loaiphieu As String) As String
    Dim i As Long, Item As Date, txt As String
If Not IsDate(NgayChungtu) Then Exit Function
If Len(Loaiphieu) = 0 Then Exit Function
With CreateObject("System.Collections.ArrayList")
    For i = 1 To VungNgayThang.Rows.Count
        Item = VungNgayThang(i)
        If UCase(VungSophieu(i)) = UCase(Loaiphieu) Then
            If Month(NgayChungtu) = Month(Item) Then
                If Not .Contains(Item) Then .Add Item
            End If
        End If
    Next
    .Sort
    If .Count Then
        For i = 0 To .Count - 1
            If NgayChungtu = .Item(i) Then
                txt = UCase(Loaiphieu) & "/" & Format(Month(NgayChungtu), "00") & "/" & Format(i + 1, "0000000")
                Exit For
            End If
        Next
    End If
End With
DanhSoPhieu = txt
End Function
 

File đính kèm

Upvote 0
Bạn thử:
PHP:
Function DanhSoPhieu(ByVal VungNgayThang As Range, ByVal VungSophieu As Range, _
        ByVal NgayChungtu, ByVal Loaiphieu As String) As String
    Dim i As Long, Item As Date, txt As String
If Not IsDate(NgayChungtu) Then Exit Function
If Len(Loaiphieu) = 0 Then Exit Function
With CreateObject("System.Collections.ArrayList")
    For i = 1 To VungNgayThang.Rows.Count
        Item = VungNgayThang(i)
        If UCase(VungSophieu(i)) = UCase(Loaiphieu) Then
            If Month(NgayChungtu) = Month(Item) Then
                If Not .Contains(Item) Then .Add Item
            End If
        End If
    Next
    .Sort
    If .Count Then
        For i = 0 To .Count - 1
            If NgayChungtu = .Item(i) Then
                txt = UCase(Loaiphieu) & "/" & Format(Month(NgayChungtu), "00") & "/" & Format(i + 1, "0000000")
                Exit For
            End If
        Next
    End If
End With
DanhSoPhieu = txt
End Function
Ngày 1/1/2018 có 2 phiếu BH thì sao ta:p
 
Upvote 0
Nhờ moi người giúp code tạo hàm tự động thêm số chứng từ khi biết loại chứng từ và ngày tháng theo định dạng, tháng 1 sẽ là "pn/01/000001" hết tháng sang tháng 2 lại bắt đầu bằng "pn/02/00001"
Xin góp vài ý với bộ mã chứng từ của bạn:

1./ Quá dài & dư thừa;
Nên chăng chỉ là TA00000: là loại fiếu thu của fiếu đầu tiên của tháng 1
CB00009 là fiếu chi thứ mười của tháng 2
, . . . . . .
 
Upvote 0
Hôm trước chị có giúp em thấy hay quá ạ ! Hôm nay em thấy cách khác ! Chắc thêm nhiều điều kiện nữa
Hôm nay rảnh đang đọc cái CreateObject("System.Collections.ArrayList"). Đến bây giờ vẫn chưa đọc hết mặt chữ Bạn ạ ;)
 
Upvote 0
Upvote 0
Sort dữ liệu trùng bằng CreateObject("System.Collections.ArrayList") để xử lý dữ liệu khá khó, nếu là số nguyên hoặc ngày thì cộng thêm 1 giá trị <1 để phân biệt các giá trị trùng
Chắc chẳng có ai viết cái hàm kiểu này như em đâu anh nhỉ
 

File đính kèm

Upvote 0
Web KT

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

Back
Top Bottom