Chỉ chấp nhận một chữ số duy nhất (Microsoft Excel)
Rich tự hỏi làm thế nào anh ta có thể định cấu hình Excel để khi anh ta nhập một chữ số duy nhất, nó sẽ tự động chuyển sang ô tiếp theo. Anh ta muốn loại bỏ việc nhấn Enter hoặc Tab để đến ô tiếp theo. Giá trị của mục nhập cho một dải ô sẽ luôn là một chữ số dương duy nhất.
Điều này không thể được thực hiện với bất kỳ cài đặt cấu hình gốc nào trong Excel.
Thay vào đó, bạn sẽ cần tạo một macro sẽ xử lý mục nhập cho bạn. Một lựa chọn tự nhiên cho macro là sử dụng sự kiện Thay đổi cho trang tính, để bất kỳ khi nào giá trị được nhập vào một ô, mục nhập sẽ được “tách ra” và được nhồi vào các ô trong hàng.
Private Sub Worksheet_Change(ByVal Target As Range) If IsNumeric(Target.Value) Then CRow = Target.Row CColumn = Target.Column - 1 Entry = Target.Value For i = 1 To Len(Entry) Cells(CRow, CColumn + i).Value = Mid(Entry, i, 1) Next End If End Sub
Macro này trước tiên sẽ kiểm tra xem những gì đã nhập có phải là số hay không. Nếu đúng, thì các chữ số được trích xuất từ giá trị và được đặt trong các ô liên tiếp trong hàng.
Tất nhiên, hạn chế của macro như vậy là bạn vẫn cần nhấn Enter để kích hoạt sự kiện. Nếu bạn muốn thoát khỏi việc nhấn Enter hoàn toàn, thì bạn sẽ cần phải dựa vào một cách tiếp cận khác.
Kỹ thuật này dựa vào chức năng OnKey để gán macro cho các lần nhấn phím cụ thể. Đặt mã sau vào một mô-đun macro tiêu chuẩn.
Sub Assigns() Dim i As Variant With Application For i = 0 To 9 .OnKey i, "dig" & i Next End With End Sub
Sub ClearAssigns() Dim i As Variant With Application For i = 0 To 9 .OnKey i Next End With End Sub
Sub dig0() ActiveCell.Value = 0 ActiveCell.Offset(1, 0).Select End Sub
Sub dig1() ActiveCell.Value = 1 ActiveCell.Offset(1, 0).Select End Sub
Sub dig2() ActiveCell.Value = 2 ActiveCell.Offset(1, 0).Select End Sub
Sub dig3() ActiveCell.Value = 3 ActiveCell.Offset(1, 0).Select End Sub
Sub dig4() ActiveCell.Value = 4 ActiveCell.Offset(1, 0).Select End Sub
Sub dig5() ActiveCell.Value = 5 ActiveCell.Offset(1, 0).Select End Sub
Sub dig6() ActiveCell.Value = 6 ActiveCell.Offset(1, 0).Select End Sub
Sub dig7() ActiveCell.Value = 7 ActiveCell.Offset(1, 0).Select End Sub
Sub dig8() ActiveCell.Value = 8 ActiveCell.Offset(1, 0).Select End Sub
Sub dig9() ActiveCell.Value = 9 ActiveCell.Offset(1, 0).Select End Sub
Để bắt đầu macro, hãy chạy macro Gán. Sau đó, mỗi khi nhập một chữ số, chữ số đó sẽ được đưa vào ô hiện tại và ô tiếp theo bên phải được chọn. Nếu bạn nhập văn bản, thì không có gì xảy ra.
(Tất nhiên, nếu bạn cố gắng nhập một giá trị hỗn hợp, chẳng hạn như B2B, thì khi bạn nhấn “2”, đó là giá trị sẽ kết thúc trong ô.) Khi bạn hoàn thành kiểu nhập dữ liệu này, hãy chạy macro ClearAssigns để kết thúc.
_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 (12276) áp dụng cho Microsoft Excel 2007, 2010, 2013 và 2016.
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: