Menu

Tự động hóa việc tạo mã sản phẩm/mã nhân viên duy nhất bằng VBA

Lương Hán Thêu 08/06/2026 00:27 239 lượt xem 3 trả lời

Chào các anh em trong diễn đàn,

Mình đang làm một file quản lý danh mục sản phẩm và muốn tự động sinh mã sản phẩm duy nhất cho mỗi lần thêm mới. Ví dụ, mã sản phẩm có dạng 'SP001', 'SP002',... Tương tự với mã nhân viên 'NV001', 'NV002',...

Hiện tại mình đang làm thủ công, mỗi lần thêm là phải đếm xem mã cuối cùng là gì rồi cộng thêm 1. Cách này khá tốn thời gian và dễ sai sót nếu file có nhiều người cùng thao tác.

Mình nghĩ VBA có thể giải quyết được vấn đề này. Có cao nhân nào đã từng làm qua hoặc có gợi ý về cách viết code để tự động sinh mã duy nhất không ạ? Mình muốn khi người dùng nhập thông tin sản phẩm/nhân viên vào một UserForm, thì ngay khi nhấn nút 'Thêm mới', hệ thống sẽ tự động tạo ra một mã mới dựa trên mã cuối cùng có trong danh sách và gán vào ô mã.

Yêu cầu là mã phải luôn duy nhất và tăng dần. Ví dụ, nếu mã cuối là 'SP050', mã mới sẽ là 'SP051'.

Anh em nào có code mẫu hoặc hướng dẫn chi tiết thì chia sẻ giúp mình với. Mình cảm ơn nhiều!

2

Chào bạn,

Vấn đề này VBA xử lý ngon lành luôn. Bạn có thể dùng hàm WorksheetFunction.Max để tìm mã lớn nhất hiện có, sau đó cộng 1 và định dạng lại. Ví dụ, nếu mã sản phẩm là 'SP001', bạn lấy số 1, cộng 1 thành 2, rồi định dạng lại thành 'SP002'.

Nếu bạn muốn chi tiết hơn về cách lấy số từ mã, hoặc cách định dạng số thành chuỗi có số 0 đứng đầu, cứ hỏi nhé!

0
Chào bạn, Vấn đề này mình cũng gặp tương tự khi làm file quản lý kho. Cách bạn đang làm thủ công đúng là dễ sai sót thật. Mình có một cách dùng VBA để tự động tạo mã này, khá đơn giản và hiệu quả. Bạn có thể tham khảo thử: ```html

Bạn có thể dùng một biến để lưu trữ số thứ tự cuối cùng, mỗi lần thêm mới thì lấy giá trị đó cộng 1. Để lưu trữ số thứ tự này giữa các lần chạy macro, bạn có thể lưu nó vào một ô tính ẩn nào đó hoặc sử dụng Application.GetSaveAsFilename để giữ giá trị đó.

Ví dụ, với mã sản phẩm, bạn có thể lấy mã cuối cùng (ví dụ: SP005), tách phần số ra (005), chuyển thành số nguyên (5), cộng thêm 1 (thành 6), rồi định dạng lại về dạng chuỗi có 3 chữ số với số 0 đứng đầu (006). Ghép với tiền tố 'SP' là có ngay mã mới 'SP006'.

Bạn muốn mình chia sẻ đoạn code minh họa cụ thể hơn cho cả mã sản phẩm và mã nhân viên không?

0

Chào bạn,

Vấn đề này VBA xử lý ngon lành luôn. Bạn có thể dùng hàm WorksheetFunction.Max để tìm mã lớn nhất hiện có, sau đó cộng 1 và định dạng lại. Ví dụ, nếu mã sản phẩm là 'SP001', bạn lấy số 1, cộng 1 thành 2, rồi định dạng lại thành 'SP002'.

Nếu bạn muốn chi tiết hơn về cách lấy số từ mã, hoặc cách định dạng số thành chuỗi có số 0 đứng đầu, cứ hỏi nhé!

4

Bạn cần đăng nhập để trả lời chủ đề này.

Đăng nhập Đăng ký