Tự động di chuyển từ ô này sang ô khác khi nhập dữ liệu (Microsoft Excel)
Sheila có một trang tính trong đó cần nhập một chuỗi các số có bốn chữ số. Cô ấy muốn một cách mà Enter hoặc Tab không cần phải được nhấn giữa mỗi lần nhập. Nói cách khác, sau khi mỗi chữ số thứ tư được nhấn, Sheila muốn Excel tự động chuyển sang ô tiếp theo.
Excel không cung cấp loại mục nhập dữ liệu này dưới dạng tùy chọn. Tuy nhiên, bạn có thể tạo macro để xử lý việc nhập dữ liệu. Một cách là đối với chúng tôi một macro đơn giản nhắc người dùng nhập một chuỗi ký tự. Khi người dùng nhấn Enter (để biểu thị rằng chuỗi đã hoàn tất), thì macro sẽ lấy từng đoạn bốn ký tự liên tiếp và đặt chúng vào các ô liên tiếp.
Sub FourCharEntry1() Dim str As String Dim x As Integer Dim y As Integer str = InputBox("Enter string") y = 0 For x = 1 To Len(str) Step 4 ActiveCell.Offset(0, y) = "'" & Mid(str, x, 4) y = y + 1 Next End Sub
Lưu ý rằng macro, vì nó đang đặt các khối bốn ký tự vào các ô, đảm bảo rằng mỗi đoạn được đặt trước bởi một dấu nháy đơn. Lý do cho điều này là để xử lý những trường hợp khi đoạn bốn ký tự có thể chỉ bao gồm các số và những số đó bắt đầu bằng một hoặc nhiều số 0. Thêm dấu nháy đơn đảm bảo rằng Excel coi mục nhập ô là văn bản và các số 0 đứng đầu sẽ không bị xóa.
Bạn cũng có thể tránh sử dụng InputBox bằng cách chỉ cần cho phép ai đó nhập văn bản vào một ô trong trang tính. Người đó có thể gõ bao nhiêu tùy thích (hàng nghìn ký tự, nếu cần).
Sau đó, với ô được chọn, bạn có thể chạy một macro sẽ lấy thông tin từ ô đó và thực hiện cùng một tác vụ — chia nhỏ nó thành các đoạn bốn ký tự. Macro sau thực hiện điều đó:
Sub FourCharEntry2() Dim str As String Dim x As Integer Dim y As Integer str = ActiveCell.Value y = 0 For x = 1 To Len(str) Step 4 ActiveCell.Offset(0, y) = "'" & Mid(str, x, 4) y = y + 1 Next End Sub
Một cách tiếp cận khác là sử dụng biểu mẫu người dùng tùy chỉnh cho đầu vào của người dùng. Biểu mẫu cung cấp sự tương tác phong phú hơn nhiều với VBA, vì vậy bạn thực sự có thể đưa nó vào các ô sau mỗi ký tự thứ tư được nhập.
Bắt đầu bằng cách tạo biểu mẫu người dùng (như được mô tả trong các vấn đề khác của ExcelTips) có chứa hai điều khiển — một hộp văn bản và một nút. Đặt tên cho hộp văn bản là vText và liên kết đoạn mã sau với nó:
Private Sub vText_Change() If Len(vText) = 4 Then ActiveCell = vText ActiveCell.Offset(0, 1).Activate UserForm1.vText.Value = "" End If End Sub
Điều này chỉ đơn giản chạy mỗi khi nội dung của hộp văn bản thay đổi (tức là khi bạn nhập từng ký tự) và sau đó kiểm tra độ dài của bất kỳ ký tự nào mà nó chứa. Khi độ dài đạt đến 4, mã sẽ lấy các ký tự đó và nhét chúng vào một ô. Nội dung của vText sau đó được làm trống.
Tên của nút bạn tạo trong biểu mẫu người dùng không thực sự quan trọng. Nó sẽ được sử dụng như một cách để đóng biểu mẫu người dùng và phải có mã sau được liên kết với nó:
Private Sub Cancel_Click() Unload UserForm1 End Sub
Khi bạn đã sẵn sàng sử dụng biểu mẫu người dùng, chỉ cần chọn ô mà bạn muốn bắt đầu nhập liệu và sau đó chạy macro sau:
Sub Start() UserForm1.Show End Sub
Biểu mẫu người dùng xuất hiện và bạn có thể bắt đầu nhập. Khi bạn hoàn tất, chỉ cần nhấp vào nút và biểu mẫu người dùng được đóng lại.
_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 (13102) á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: