Nhập liệu vào sheet (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

quoc nhat

Thành viên tiêu biểu
Tham gia
8/3/12
Bài viết
567
Được thích
43
Nghề nghiệp
cán bộ ngành y tế
Xin Chào Các Anh Chị Trên GPE.
Em có một câu hỏi muốn nhờ các anh chị giải giùm em với:
Ví dụ em có 1 sheet có các cell để nhập dữ liệu cụ thể vào nhưng em chỉ muốn khi em ấn phím Tab hoặc phím Enter thì nó chỉ nhảy đến các cell nhập dữ liệu đã quy định sẵn đó thôi mà không phải nhảy qua các cell không nhập dữ liệu khác ( lưu ý có thứ tự Tab). Các anh chị chỉ giùm em với!
 
Đơn giản nhất là chọn các ô muốn nhập dữ liệu và đặt thuộc tính Locked = false (không tích chọn), sau đó protect sheet.
 
Upvote 0
Xin Chào Các Anh Chị Trên GPE.
Em có một câu hỏi muốn nhờ các anh chị giải giùm em với:
Ví dụ em có 1 sheet có các cell để nhập dữ liệu cụ thể vào nhưng em chỉ muốn khi em ấn phím Tab hoặc phím Enter thì nó chỉ nhảy đến các cell nhập dữ liệu đã quy định sẵn đó thôi mà không phải nhảy qua các cell không nhập dữ liệu khác ( lưu ý có thứ tự Tab). Các anh chị chỉ giùm em với!
Giả sử 3 ô cân nhập dữ liệu là a1, c2, e3
thì test code thế này xem sao, nếu đạt thì tùy biến, nếu không thì thôi nhé
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim dk As Range
Set dk = Union([a1], [c2], [e3])
If Not Intersect(dk, Target) Is Nothing Then
    If [a1] = "" Then
        [a1].Select
    ElseIf [c2] = "" Then
        [c2].Select
    ElseIf [e3] = "" Then
        [e3].Select
    End If
End If
End Sub
 
Upvote 0
Đơn giản nhất là chọn các ô muốn nhập dữ liệu và đặt thuộc tính Locked = false (không tích chọn), sau đó protect sheet.
cảm ơn anh đã chỉ giúp nhưng phàn này em kém quá anh chỉ giùm một cách tỷ mỹ cách làm cụ thể cho em được không?
 
Upvote 0
Giả sử 3 ô cân nhập dữ liệu là a1, c2, e3
thì test code thế này xem sao, nếu đạt thì tùy biến, nếu không thì thôi nhé
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim dk As Range
Set dk = Union([a1], [c2], [e3])
If Not Intersect(dk, Target) Is Nothing Then
    If [a1] = "" Then
        [a1].Select
    ElseIf [c2] = "" Then
        [c2].Select
    ElseIf [e3] = "" Then
        [e3].Select
    End If
End If
End Sub
cảm ơn anh
em sẻ cố gắng làm theo 2 cách của anh và anh vuluan xem thế nào
 
Upvote 0
cảm ơn anh đã chỉ giúp nhưng phàn này em kém quá anh chỉ giùm một cách tỷ mỹ cách làm cụ thể cho em được không?

B­ước 1. Chọn vùng cho phép nhập dữ liệu (nếu nhiều vùng có thể nhấn giữ phím Ctrl trong khi chọn - và có thể chọn bước này nhiều lần)
Bước 2. R-Click (nhấn phải mouse) chọn lệnh Format Cells... => xuất hiện bảng => chọn mục Protection => bỏ chọn ở ô [ ] Locked
Bước 3. Vào menu tìm mục Protect sheet để thiết lập chế độ bảo vệ - Xong
 
Upvote 0
B­ước 1. Chọn vùng cho phép nhập dữ liệu (nếu nhiều vùng có thể nhấn giữ phím Ctrl trong khi chọn - và có thể chọn bước này nhiều lần)
Bước 2. R-Click (nhấn phải mouse) chọn lệnh Format Cells... => xuất hiện bảng => chọn mục Protection => bỏ chọn ở ô [ ] Locked
Bước 3. Vào menu tìm mục Protect sheet để thiết lập chế độ bảo vệ - Xong
theo như hướng dẫn của anh thì đây là bảo vệ giữ liệu trong cell chứ em làm như anh bảo thì tab nó vẫn cứ nhảy qua các cell không nhập liệu khác anh ạ
 
Upvote 0
theo như hướng dẫn của anh thì đây là bảo vệ giữ liệu trong cell chứ em làm như anh bảo thì tab nó vẫn cứ nhảy qua các cell không nhập liệu khác anh ạ
Bước 1: Chọn các ô (cell) cần unlock. Bật chức năng format cells (Ctrl+1). Chọn tab Protections>bỏ chọn Locked.

unlock.jpg

Bước 2: Chọn Protect sheet. Chú ý chỉ bật tuỳ chọn "Select unlocked cells".
Lock_options.jpg
 
Upvote 0
Upvote 0
cho em hỏi thêm nếu muốn tạo thứ tự tab thì làm như thế nào nữa à?
Mình đưa ra cho bạn nguyên lý giải quyết vấn đề này.
Tại bước (tab) n có địa chỉ là "XXX".
Bạn nhận tab/enter (bước n+1) nhảy đến "YYY". Nếu ô bạn muốn nhảy tới không phải là "YYY" mà phải là "ZZZ".
Thì bạn ghi nhận lại cặp XXX-YYY này. Nếu xảy ra bước nhảy đó thì chuyển chuyển con nháy tới "ZZZ".
PHP:
SUB SELECT_CHANGE(TARGET)
      IF TARGET.ADDRESS=YYY AND PREV=XXX THEN
            SELECT(ZZZ)
      ENDIF
      .....
      PREV=TARGET.ADDRESS
END SUB
Cứ ấn tab/enter để phát hiện ra các bước nào nhảy sai.
Đây là thuật toán cơ bản. Dựa trên đây bạn có thể xây dựng được cái phương án thú vị hơn.
Chúc may mắn!
 
Lần chỉnh sửa cuối:
Upvote 0
Mình đưa ra cho bạn nguyên lý giải quyết vấn đề này.
Tại bước (tab) n có địa chỉ là "XXX".
Bạn nhận tab/enter (bước n+1) nhảy đến "YYY". Nếu ô bạn muốn nhảy tới không phải là "YYY" mà phải là "ZZZ".
Thì bạn ghi nhận lại cặp XXX-YYY này. Nếu xảy ra bước nhảy đó thì chuyển chuyển con nháy tới "ZZZ".
PHP:
SUB SELECT_CHANGE(TARGET)
      IF TARGET.ADDRESS=YYY AND PREV=XXX THEN
            SELECT(ZZZ)
      ENDIF
      .....
      PREV=TARGET.ADDRESS
END SUB
Cứ ấn tab/enter để phát hiện ra các bước nào nhảy sai.
Đây là thuật toán cơ bản. Dựa trên đây bạn có thể xây dựng được cái phương án thú vị hơn.
Chúc may mắn!
Cảm ơn bạn. Mình chưa rỏ ý bạn hướng dẫn lắm . Bạn có chỉ giùm minh kỷ hơn được hơn không
Bạn thử cho mình file ví dụ được không để mình tiện áp dụng ấy mà!
 
Upvote 0
Upvote 0

Bài viết mới nhất

Back
Top Bottom