EM MỚI TẬP TÀNH VBA . MONG CÁC BÁC , CÁC SƯ PHỤ CHỈ GIÁO

Liên hệ QC

thierry henry

Thành viên mới
Tham gia
11/6/18
Bài viết
19
Được thích
0
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: 2
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 Ạ

NẾU NHẬP CỘT C THÌ TARGET NÊN COI LÀ CỘT C
CÁI NOT INTERSECT CÓ LẼ CHỈ CẦN THAY = TARGET.COLUMN
 
Code theo sự kiện trên là dành cho từng ô tính, nên bạn copy cả mảng lớn thì sẽ gây lỗi module, tốt nhất bạn hãy tự tạo 1 module khác để update lại STT sau khi đã copy dữ liệu lớn
 
Web KT
Back
Top Bottom