KHI NHẬP DỮ LIỆU VÀO CỘT C THÌ SỐ THỨ TỰ Ở CỘT A VÀ MÃ HÀNG Ở CỘT B TỰ NHẢY

Liên hệ QC

thierry henry

Thành viên mới
Tham gia
11/6/18
Bài viết
49
Được thích
4
CHÀO TẤT CẢ MỌI NGƯỜI ! THEO NHƯ 1 BÁC TRÊN DIỄN ĐÀN https://tuhocvba.net/ CHỈ CÁCH " Code Đánh Số Thứ Tự Theo Dữ Liệu Phát Sinh" CÓ ĐỊA CHỈ LÀ https://tuhocvba.net/threads/code-danh-so-thu-tu-theo-du-lieu-phat-sinh.183/ THÌ

- tại sự kiện worksheet change ta xác định vùng thay đổi sẽ là cột B,
- lặp từ ô A5 cho đến last row của cột B
- dùng biến STT để lưu giá trị số thứ tự (bắt đầu từ 1), Nếu ô B mà khác rỗng thì điền giá trị STT vào ô A =>rồi tăng STT lên 1
- sẽ luôn luôn phải xoá tất cả STT cũ khi cập nhật dữ liệu mới

VÀ ĐOẠN CODE LÀ :
Private Sub Worksheet_Change(ByVal Target As Range)

Dim rangeToChange As Range
Set rangeToChange = Range("B:B")

Dim i As Integer, STT As Integer
STT = 1

If Not Application.Intersect(rangeToChange, Range(Target.Address)) Is Nothing Then 'nếu ô B đựoc điền dữ liệu
Range("A5:A" & Rows.Count).ClearContents 'Xoá STT cũ đi
For i = 5 To Range("B" & Rows.Count).End(xlUp).Row 'lặp từ dòng 2 đến dòng cuối
If Range("B" & i).Value <> "" Then 'nếu B khác rỗng
Range("A" & i).Value2 = STT 'điền số thứ tự
STT = STT + 1 'tăng STT lên 1 để cho ô kế tiếp
End If
Next i
End If

End Sub


SAU ĐẤY EM KẾT HỢP VỚI MỘT ĐOẠN CODE MÀ EM SƯU TẦM ĐƯỢC ( Ở MODULE 1 )ĐỂ TỰ ĐỘNG ĐÁNH MÃ VẬT TƯ . KHI THỬ NGHIỆM ĐÁNH TỪNG DỮ LIỆU 1 VÀO C5 THÌ CÙNG 1 LÚC B5 NHẢY MÃ VẬT TƯ VÀ A5 NHẢY SỐ THỨ TỰ , SAU ĐÓ XÓA DỮ LIỆU CỘT C THÌ ĐỒNG THỜI CONTENT Ở CỘT A VÀ B BIẾN MẤT . CÓ THỂ NÓI LÀ RẤT ỔN , NHƯNG KHI EM COPY PASTE MỘT LƯỢNG LỚN DỮ LIỆU VÀO CỘT C ( TỪ C5 ĐẾN C 12 ) THÌ NÓ BÁO LỖI MISMACTH HAY MÃ VẬT TƯ NHẢY SAI . ĐÂY LÀ FILE CỦA EM MONG MẤY BÁC GIÚP Ạ . EM XIN CẢM ƠN Ạ
 

File đính kèm

  • TỰ NHẢY SỐ THỨ TỰ VÀ MÃ HÀNG .xlsm
    19.2 KB · Đọc: 14
Bạn thử code này xem
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim enR&, Rng As Range
Application.GoTo (DMHH.[b1048576].End(3).Offset(1)), True
enR = [b1048576].End(3).Row
Dim j As Integer
Dim rangeToChange1 As Range
Set rangeToChange1 = Range("C:C")
If Not Application.Intersect(rangeToChange1, Range(Target.Address)) Is Nothing Then   'n?u ô B ??oc ?i?n d? li?u
 Range("B5:B" & enR).ClearContents  'Xoá STT c? ?i
  For j = 5 To Range("C" & Rows.Count).End(xlUp).Row    'l?p t? dòng 2 ??n dòng cu?i
    enR = [b1048576].End(3).Row
    Set Rng = Range("B5:B" & enR).Find("VT*", , xlValues, xlPart, , xlPrevious)
       If Range("C" & j).Value <> "" Then     'n?u B khác r?ng
         If Not Rng Is Nothing Then
            Range("B" & j).Value2 = "VT" & Format(Right(CStr(Rng.Value), 4) + 1, "0000")
         Else
            Range("B" & j).Value2 = "VT0001"
         End If
       End If
      Set Rng = Nothing
   Next j
End If
thoat: Exit Sub
End Sub
 
Upvote 0
Mình đã thử . Cảm ơn bạn nhé . Nhưng mỗi lần mình xóa bất kì dòng nào ở cột C thì nó lại xóa hết cột A , B rồi đếm lại từ đầu . Mình đã dùng code
Application.ScreenUpdating = False
'đoạn code xử lý dữ liệu
Application.ScreenUpdating = True

nhưng không ăn thua . Bạn và mấy bác có cao kiến gì không ạ
 

File đính kèm

  • TỰ NHẢY SỐ THỨ TỰ VÀ MÃ HÀNG .xlsm
    22.1 KB · Đọc: 3
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom