tự động tìm khi nhập mã số

Liên hệ QC
Em đã xem file của bác, cách này đỡ phải làm 1 button để gõ pass mà cứ vào tool để làm. Đơn giản và gọn hơn nhiều.
Em mở vbe ra thấy đoạn code sau:

Private Sub Worksheet_Change(ByVal Target As Range)
Sheet1.Unprotect "DANH"
If Target.Address = "$B$2" Or Target.Address = "$C$2" Then
Target.Locked = False
Else
Target.Locked = True
End If
If Target.Address = "$B$2" Then
Set DS = [A4].CurrentRegion
DS.AdvancedFilter Action:=1, CriteriaRange:=Range("B1:B2")
[C2].Select
End If
If Target.Address = "$C$2" And [C2].Value <> "" Then
k = Range("B2").Value
For i = 5 To Range("B5").End(xlDown).Row
If Cells(i, 2).Value = k Then
Cells(i, Range("B" & i).End(xlToRight).Column + 1) = Cells(2, 3)
Cells(i, Range("B" & i).End(xlToRight).Column + 1).Select
End If
Next
End If
Sheet1.Protect "DANH"
End Sub


Nhờ bác giải thích hộ em ý nghĩa của đoạn code em tô đỏ ạh.
Thanks
 
Vầy nha!
If Target.Address = "$C$2" And [C2].Value <> "" Then | Nếu vị trí con trỏ chuột đặt vào ô C2 và ô C2 đó để trống thì k = Range("B2").Value | Lấy giá trị của ô B2 đặt vào biến K
For i = 5 To Range("B5").End(xlDown).Row | Chạy dòng lệnh For bắt đầu từ 5 đến (số dòng bắt đầu từ ô B5)
If Cells(i, 2).Value = k Then | Nếu dòng i cột 2 có giá trị đúng bằng biến k thì
Cells(i, Range("B" & i).End(xlToRight).Column + 1) = Cells(2, 3) | dòng i cột (số cột bắt đầu từ (cột B dòng i) + 1) có giá trị bằng dòng 2 cột 3
Cells(i, Range("B" & i).End(xlToRight).Column + 1) .select | dòng i cột (số cột bắt đầu từ (cột B dòng i) + 1) được chọn
End If | kết thúc lệnh IF
Next | tiếp của lệnh For...next End If | kết thúc lệnh IF
Lệnh End(xlDown): có nghĩa là lấy hết đến cuối
Lệnh End(xlToRight): có nghĩa là lấy hết đến bên phải
Không biết dịch như vầy bạn có hiểu không nhỉ? Nó cũng như cách bạn hỏi thôi nhưng bằng ngôn ngữ VBA!
Thân.
 
Lần chỉnh sửa cuối:
Bạn quá khách sáo rồi, giúp được mọi người là niềm vui mà. Chúc bạn sớm ngày giỏi Excel nha! (Nhờ Mod xóa giùm vào hôm sau nha! Thanks)
 
Lần chỉnh sửa cuối:
ok em đã xem và cũng hiểu ra được nhiều vấn đề.Có cái là mỗi khi em enter tại ô c2 thì chuột một là xuống dưới hoặc sang 2 phía.Có cánh nào tại vị trí đó mình cố định được chuột để nhập tiếp giá trị khác không phải click chuột lại không bác Po_pi.Và cái nữa là em chỉ muốn các số liệu được nhập đến khu nhập kho thì ko cho di chuyển thêm nữa.Ngừng tại đó, nếu có nhập thêm thi ko được.Thank bác
 
Vậy thì bạn làm cho ô đó cố định luôn nếu nhập dữ liệu vào thì lúc nào nó cũng trở về chổ đó thôi!
Ví dụ:
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
[COLOR=red]If Target.Address = "$C$3" Then[/COLOR]
[COLOR=red]Range("C3").Select[/COLOR]
[COLOR=red]End If[/COLOR]
End Sub
Còn đối với khu vực khác thì không thể di chuyển ra được thì mình dùng code đơn giản như sau. Ví dụ: Khóa khu vực A1:J10 không thể nhập dữ liệu ở vùng khác được. Cũng không thể thao tác gì ở các ô bên ngoài luôn.
Mã:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If [COLOR=red]Target.Row > 10[/COLOR] Then
    [COLOR=red]Cells(Target.Row - 1, Target.Column).Select[/COLOR]
ElseIf [COLOR=red]Target.Column > 10[/COLOR] Then
    [COLOR=red]Cells(Target.Row, Target.Column - 1).Select[/COLOR]
End If
End Sub
Tất cả code này phải đặt trong Sheet (VBA) mới có tác dụng. Bạn thử xem!
 
Lần chỉnh sửa cuối:
em đã thử nhưng...không được. chuột không trở lại vị trí c2 như mình mong muốn đê nhập tiếp dữ liệu
phiền bác up file giùm em
 
Lần chỉnh sửa cuối:
Mình quên là bạn đang nói về C3, nên trong ví dụ mình để mở B2. Mình sữa lại code rồi đó, bạn làm lại xem có đúng không?!
 
mình tập hợp những gì các bác chỉ và đưa vào file câu sub sau:
Sub worksheet_change(ByVal target As Range)
ActiveSheet.unprotect "DANH"
If target.Address = "$B$2" Or target = "" Then
target.Locked = False
Else
target.Locked = True
End If
If target.Address = "$B$2" Then
Set DS = [A4].CurrentRegion
DS.AdvancedFilter Action:=1, CriteriaRange:=Range("B1:B2")
End If
Sheet4.Protect "DANH"
Sheet3.Protect "DANH"
End Sub
active sheet ở đây là sheet 4
thế nhưng nó chỉ cho nhập vào mỗi B2 thôi, những cell trống khác không có dữ liệu vẫn không cho mình nhập liệu vào nếu không unprotec sheet.
Cácc bác xem giúp mình xem phải điều chỉnh sao nhé.
 
mình tập hợp những gì các bác chỉ và đưa vào file câu sub sau:

active sheet ở đây là sheet 4
thế nhưng nó chỉ cho nhập vào mỗi B2 thôi, những cell trống khác không có dữ liệu vẫn không cho mình nhập liệu vào nếu không unprotec sheet.
Cácc bác xem giúp mình xem phải điều chỉnh sao nhé.

Code đúng rồi, chỉ có điều thiếu chút thôi, bạn có thể chọn toàn bộ cell và bỏ check locked, sau đó mới sử dụng code hay thêm đoạn code sau vào đầu code của bạn
PHP:
Cells.Locked = False
 
Bác Danh ơi, em chỉ muốn khóa cells có dữ liệu thôi ( ngoại trừ cell b1 và b2) còn cells trống thì vẫn cho nhập liệu. còn khi toàn bộ cell và bỏ check locked và thêm đoạn code này thì vẫn kháo sheet nhưng lại chình sửa được dữ liệu.
 
em đã làm như bác pi chỉ nhưng khi nhập ngày tháng vào file gốc của em thì không được.ở dưới không thấy hiện ngày tháng.Đây là file gốc tại ô em nhập dữ liệu (là ô B5 ).Không biết em đã làm sai bước nào.Mong được các bác chỉ giúp.
 

File đính kèm

em đã làm như bác pi chỉ nhưng khi nhập ngày tháng vào file gốc của em thì không được.ở dưới không thấy hiện ngày tháng.Đây là file gốc tại ô em nhập dữ liệu (là ô B5 ).Không biết em đã làm sai bước nào.Mong được các bác chỉ giúp.
Bạn xem lại code nha! Mình sửa song, nhưng quên mất sai chổ nào rồi! Thân.
 

File đính kèm

Lần chỉnh sửa cuối:
Còn khi toàn bộ cell và bỏ check locked và thêm đoạn code này thì vẫn kháo sheet nhưng lại chình sửa được dữ liệu.
Còn việc này thì mình không hiểu bạn muốn thế nào cả, bạn có thể nói rõ hơn không? Thân.
 

File đính kèm

Lần chỉnh sửa cuối:
Hix.Hôm qua đến giờ em loay hoay mãi mà không tìm ra lý do+ nguyên nhân.Thật thấy bất tài vô cùng.code có sẵn rồi mà không biết làm sao....Thank bác đã giúp đỡ nhiệt tình.tuy rằng em không biết bác sửa thế nào hix hix.
 
Lần chỉnh sửa cuối:
Bạn mở code của hai file ra (1 là của bạn gửi lên diễn đàn, 2 là của mình mới gửi) rồi so sánh vị trí khác nhau rồi thắc mắt xem tại sao mình lại sửa như vậy! Thì ra liền. Không phải mình không biết bạn sai chổ nào nhưng làm vậy thì bạn sẽ nhanh giỏi hơn. Học từ cái sai của mình thì sẽ tiến bộ từng ngày. Mình ngày trước cũng vậy, nên truyền cho bạn kinh nghiệm này nha! Chúc thành công!
 
Lần chỉnh sửa cuối:
À bác có thể làm cho khi nhập hết khu vực qui định chẳng hạn như file của em đến cột kết lô thi minh nhập thêm không được và chuột chuyển sang ô A5 để mình tìm tên hàng khác được không?
Làm phiền bác thêm lần nữa vậy
 
Còn việc này thì mình không hiểu bạn muốn thế nào cả, bạn có thể nói rõ hơn không?
Thân.
mình tập hợp những gì các bác chỉ và đưa vào file câu sub sau:

Sub worksheet_change(ByVal target As Range)
ActiveSheet.unprotect "DANH"
If target.Address = "$B$2" or target.value = "" Then
target.Locked = False
Else
target.Locked = True
End If
If target.Address = "$B$2" Then
Set DS = [A4].CurrentRegion
DS.AdvancedFilter Action:=1, CriteriaRange:=Range("B1:B2")
End If
Sheet4.Protect "DANH"
Sheet3.Protect "DANH"
End Sub
active sheet ở đây là sheet 4
thế nhưng nó chỉ cho nhập vào mỗi B2, B3 thôi, những cell trống khác không có dữ liệu vẫn không cho mình nhập liệu vào nếu không unprotec sheet.
Sau khi nhìn lại file bác vừa gởi, mình bổ sung thêm value ( màu đỏ đậm). nhưng vẫn không được.
Ý mình muốn vừa auto fillter, vừa protec những cell có dữ liệu sau khi file được save, còn những cell trống thì không bị khóa.
 
À bác có thể làm cho khi nhập hết khu vực qui định chẳng hạn như file của em đến cột kết lô thi minh nhập thêm không được và chuột chuyển sang ô A5 để mình tìm tên hàng khác được không? Làm phiền bác thêm lần nữa vậy
Xong rồi nè! Có 1 lệnh chờ bạn kích hoạt, bạn thử đi, thú vị lắm đó. À, cái chương trình này cứ Enter không ha, đã quá nhỉ, không biết có ly kem nào không ta! Nógn quá! !$@!! Bạn xem file nha! Thân.
 

File đính kèm

Lần chỉnh sửa cuối:
oke ! ly kem thì chuyện nhỏ. nếu không phiền bác cứ cho cái hẹn ( em o sài gòn ) anh em mình làm chầu cafe làm quen. OK
 
mình tập hợp những gì các bác chỉ và đưa vào file câu sub sau: active sheet ở đây là sheet 4 thế nhưng nó chỉ cho nhập vào mỗi B2, B3 thôi, những cell trống khác không có dữ liệu vẫn không cho mình nhập liệu vào nếu không unprotec sheet. Sau khi nhìn lại file bác vừa gởi, mình bổ sung thêm value ( màu đỏ đậm). nhưng vẫn không được. Ý mình muốn vừa auto fillter, vừa protec những cell có dữ liệu sau khi file được save, còn những cell trống thì không bị khóa.
Trước hết bạn nên bỏ khóa (ý là nhập pass mở Protect), rồi sau đó chọn toàn bộ dữ liệu -> Chọn Format Cells -> chọn tab Protection -> Bỏ chọn mục Locked -> OK. Vậy thì file của bạn sẽ chạy được. Còn muốn vừa auto fillter được thì khi khóa phải viết như sau: Sheet1.Protect Password:="DANH", DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowFiltering:=True
 
Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom