Đôi khi bạn có thể cần Excel để tạo một số duy nhất cho trang tính của mình. Ví dụ: bạn có thể đang sử dụng Excel để tạo các biểu mẫu như invoices, bảng sao kê hoặc trang theo dõi và bạn cần các số duy nhất cho mỗi biểu mẫu ( Tôi sẽ gọi đây là ticket number). Tất nhiên, điều này ngụ ý rằng Excel cần phải nhớ số từ phiên này sang phiên tiếp theo.

Có một số cách bạn có thể tiếp cận vấn đề này. Nếu các số không cần phải tuần tự, bạn có thể tạo số vé dựa trên thời gian hiện tại trong ngày, tính bằng giây. Có thể thêm macro sau vào đối tượng ThisWorksheet:

Private Sub Workbook_NewSheet(ByVal Sh As Object)

Dim lTicket As Long     lTicket = CLng(Time  24  60 * 60)

Sh.Range("A1") = lTicket End Sub

Macro được kích hoạt mỗi khi một trang tính mới được thêm vào sổ làm việc. Nó lấy thời gian hiện tại, chuyển nó thành một số nguyên giây, rồi đặt giá trị đó vào ô A1. Khả năng trùng lặp số vé trong bất kỳ ngày nhất định nào là điều xa vời, nhưng nó có thể xảy ra theo thời gian. (Ví dụ: nếu bạn tạo một vé vào đúng thời điểm hôm nay mà bạn đã làm hôm qua hoặc tuần trước.)

Để giải quyết vấn đề này, bạn có thể tạo một số vé theo cách sau:

Private Sub Workbook_NewSheet(ByVal Sh As Object)

Dim sTemp As String     sTemp = Format(Date, "yymmdd") & Format(Time, "hhmmss")

Sh.Range("A1") = sTemp End Sub

Phiên bản này của trình xử lý sự kiện xây dựng một số vé dựa trên cả ngày và giờ. Trừ khi bạn đang tạo vé rất nhanh, cách tiếp cận này sẽ giảm khả năng trùng lặp số do macro tạo ra.

Nếu các số phải tuần tự trong sổ làm việc hiện tại, thì bạn có thể xác định tên chứa giá trị cao hiện tại của số vé của bạn, sau đó là macro đặt số đó vào một ô trên trang tính mới và tăng giá trị của số được lưu trữ con số. Làm theo các bước sau để bắt đầu:

  1. Hiển thị tab Công thức của ruy-băng.

  2. Bấm vào công cụ Xác định Tên trong nhóm Tên đã Xác định. Excel sẽ hiển thị hộp thoại Tên mới. (Xem Hình 1.)

  3. Trong hộp Tên, nhập tên chẳng hạn như MaxNum.

  4. Trong vùng Tham chiếu đến ở cuối hộp thoại, hãy nhập một dấu bằng, theo sau là giá trị bạn muốn sử dụng cho số vé tiếp theo.

  5. Nhấp vào OK. Tên mới được lưu trữ trong sổ làm việc.

Bây giờ, thêm macro sau vào đối tượng ThisWorksheet trong VBA Editor:

Private Sub Workbook_NewSheet(ByVal Sh As Object)

Dim iMax As Integer     iMax = Mid(ThisWorkbook.Names("MaxNum"), 2)

Sh.Range("A1") = iMax     iMax = iMax + 1     ThisWorkbook.Names("MaxNum").RefersTo = "=" & iMax End Sub

Macro này được thực thi mỗi khi bạn chèn một trang tính mới vào sổ làm việc. Nó truy xuất giá trị bạn đã lưu trữ trong MaxNum, đặt giá trị đó vào ô A1 của trang tính mới, sau đó tăng giá trị được lưu trữ trong MaxNum.

_Lưu ý: _

Nếu bạn muốn biết cách sử dụng các macro được mô tả trên trang này (hoặc trên bất kỳ trang nào khác trên trang ExcelTips), tôi đã chuẩn bị một trang đặc biệt bao gồm thông tin hữu ích.

ExcelTips là nguồn của bạn để đào tạo Microsoft Excel hiệu quả về chi phí.

Mẹo này (11192) áp dụng cho Microsoft Excel 2007, 2010, 2013, 2016, 2019 và Excel trong Office 365. Bạn có thể tìm thấy phiên bản của mẹo này cho giao diện menu cũ hơn của Excel tại đây: