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

Liên hệ QC
để mình có thể dò tìm theo mã sau khi gõ vào 1 ô quy định, ở trên bác sử dụng Sub Worksheet_Change(ByVal target As Range ) và ở bảo vệ cell bác cũng sử dụng cái sub này ( chỉ khác có câu lệnh bên trong), vậy em phải chỉnh sửa làm sao để khi gõ mã số vào ô màu vàng, nhấn go là đến vị trí cần nhập liệu đó ạh.
Ah, anh Danh ơi, cũng trong trường hợp như vậy nhưng riêng cell để nhập mã số màu vàng không bị protec được không vậy anh, em chẳng nữa. Mong anh chỉ dẫn
 

File đính kèm

Lần chỉnh sửa cuối:
Tôi không hiểu bạn đã làm gì trên file mà lại nói là chậm!
Tôi nghĩ rằng code dùng Advanced Filter là rất nhanh đấy (xem lại, biết đâu trên file của bạn còn những món khác nữa)
Vui lòng cho xem code hoặc tốt nhất là nguyên file để tìm hiểu nguyên nhân chính xác hơn

Mình đoán là vì trong file này có công thức tính toán, có thể khi bung Advance Filter ra thi nó tinh toán lại dữ liệu nên lâu, không biết có chính xác không?

Code thì chính xác là code của bác luôn.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$D$2" Then
Set DS = [A4].CurrentRegion
DS.AdvancedFilter Action:=1, CriteriaRange:=Range("D1:D2")
End If
End Sub

Nếu đúng là do công thức tính toán lại, mình chặn như thế nào vậy bác?
 
Lần chỉnh sửa cuối:
để mình có thể dò tìm theo mã sau khi gõ vào 1 ô quy định, ở trên bác sử dụng Sub Worksheet_Change(ByVal target As Range ) và ở bảo vệ cell bác cũng sử dụng cái sub này ( chỉ khác có câu lệnh bên trong), vậy em phải chỉnh sửa làm sao để khi gõ mã số vào ô màu vàng, nhấn go là đến vị trí cần nhập liệu đó ạh. Ah, anh Danh ơi, cũng trong trường hợp như vậy nhưng riêng cell để nhập mã số màu vàng không bị protec được không vậy anh, em chẳng nữa. Mong anh chỉ dẫn
Khỏi cần nhấn Go chi cho mệt. Khi bạn gõ xong thì lập tức sẽ chạy đến ô bạn cần nhập. Mình cũng đã làm cho ô B4 đó không bị protect luôn rồi đó! Bạn xem có đúng ý không! Thân. Bổ sung: Bổ sung lệnh cho nút Unprotect
 

File đính kèm

Lần chỉnh sửa cuối:
để mình có thể dò tìm theo mã sau khi gõ vào 1 ô quy định, ở trên bác sử dụng Sub Worksheet_Change(ByVal target As Range ) và ở bảo vệ cell bác cũng sử dụng cái sub này ( chỉ khác có câu lệnh bên trong), vậy em phải chỉnh sửa làm sao để khi gõ mã số vào ô màu vàng, nhấn go là đến vị trí cần nhập liệu đó ạh.
Ah, anh Danh ơi, cũng trong trường hợp như vậy nhưng riêng cell để nhập mã số màu vàng không bị protec được không vậy anh, em chẳng nữa. Mong anh chỉ dẫn
Hình như tôi hơi hiểu đựoc vấn đề: Có phải ý bạn muốn bảo vệ cell theo kiểu code của Mr OkeBab nhưng vẩn muốn chừa lại 1 cell để gõ vào thoải mái không?
Vậy thì bạn tìm chổ code WorkSheet_change và thêm vào đầu code này dòng:
If Target.Address = "$B$4" Then Exit Sub
(trong trừong hợp cell muốn chừa lại là B4)
 
Hình như tôi hơi hiểu đựoc vấn đề: Có phải ý bạn muốn bảo vệ cell theo kiểu code của Mr OkeBab nhưng vẩn muốn chừa lại 1 cell để gõ vào thoải mái không?
Bác hiểu đúng ý em rồi ah.
Em làm theo như bác hướng dẫn nhập dòng lệnh
If Target.Address = "$B$4" Then Exit Sub
trước worksheet_change.
đoạn code này:
Sub worksheet_change(ByVal target As Range)
On Error Resume Next
ActiveSheet.Unprotect "DANH"
If target <> "" Then
target.Locked = True
End If
ActiveSheet.Protect
End Sub
thì máy báo lỗi: compile error: invalid outside procedure sau khi nhấn run.
Không biết sao nữa hay em đưa vào không đúng vị trí bác chỉ. Mong bác giúp đỡ
 
Bạn sửa thành vầy:
Mã:
 Sub worksheet_change(ByVal target As Range) On Error Resume Next ActiveSheet.Unprotect "DANH" If target.Value  "" Then target.Locked = True End If ActiveSheet.Protect "DANH" End Sub
Nhưng trước hết bạn quét chọn toàn bộ dữ liệu, chọn Format Cells -> Chọn tab Protection -> Bỏ chọn Locked. Để khi nhập dữ liệu mới thì ô đó sẽ bị khóa đi.
 
Lần chỉnh sửa cuối:
Thêm vào đầu code là thêm vầy nè:
Mã:
Sub worksheet_change(ByVal target As Range)
On Error Resume Next
[B]If Target.Address = "$B$4" Then Exit Sub[/B] 
ActiveSheet.Unprotect "DANH"
If target.Value <> "" Then
target.Locked = True
End If
ActiveSheet.Protect "DANH"
End Sub

chứ hông phải
Mã:
[B]If Target.Address = "$B$4" Then Exit Sub[/B]
Sub worksheet_change(ByVal target As Range)
.............
End Sub
Như vậy là Outside Procedure mà lại Invalid nữa.
 
Nếu mình muốn liệt kê những mã có liên quan được không các bạn.
Ví dụ đánh 16 thì cho ra ...16...như 1654,2416,12316547,...
 
Tại em không biết đầu code là ở đâu. BÁc đừng cười em nhé. cám ơn bác đã chỉ dẫn.
Các bác ơi. còn nếu khi ta nhập password mà nhập sai, sẽ có xuất hiện 1 msbox thông báo để mình nhập lại cho đúng, code của nó ra sao vậy các bác. và thêm nó vào chỗ nào ạh.
 
Ý bạn nói là nút Button1 (Unportect) đó phải không? Nếu vậy bạn thêm vào như sau:
Mã:
Sub Button1_Click() If UCase(InputBox("Nhap password : ", "Unprotect")) = "DANH" Then ActiveSheet.Unprotect "DANH" Else MsgBox ("nhap lai password nha!") Call Button1_Click End If End Sub
 
Lần chỉnh sửa cuối:
Rất Ok bác Po_Pikachu ạh.
Trong tưường hợp này, Khi mình protec file thì mình đâu thể lọc auto filter như cách làm của bác ndu được phải không ạh.
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$B$2" Then Set DS = [A4].CurrentRegion DS.AdvancedFilter Action:=1, CriteriaRange:=Range("B1:B2")End IfEnd Sub

và không biết có cách nào kết hợp được auto filter không vậy các bác.


 
Rất Ok bác Po_Pikachu ạh.
Trong tưường hợp này, Khi mình protec file thì mình đâu thể lọc auto filter như cách làm của bác ndu được phải không ạh.
[/font][/color][/b]
và không biết có cách nào kết hợp được auto filter không vậy các bác.
Này nhé: điều đầu tiên là thí nghiệm! Bạn thử với 1 file chưa có code gì cả... hảy Protect sheet lại xem có AutoFilter đựoc không?
Để ý khi protect sheet lại (làm bằng tay) thì có 1 hộp chọn hiện ra, trong list chọn có mục "Use AutoFilter".. tức cho phép Filter ngay cả khi sheet đã được protect
Vậy bạn hãy record macro quá trình này xem thử nếu ta protect sheet và check vào mục "Use AutoFilter" thì macro ghi lại thành code gì?
 
Này nhé: điều đầu tiên là thí nghiệm! Bạn thử với 1 file chưa có code gì cả... hảy Protect sheet lại xem có AutoFilter đựoc không?
Để ý khi protect sheet lại (làm bằng tay) thì có 1 hộp chọn hiện ra, trong list chọn có mục "Use AutoFilter".. tức cho phép Filter ngay cả khi sheet đã được protect
Vậy bạn hãy record macro quá trình này xem thử nếu ta protect sheet và check vào mục "Use AutoFilter" thì macro ghi lại thành code gì?
dạ lúc này ở module có 1 code macro như sau:
Sub Macro1()
'
' Macro1 Macro
' Macro recorded 19/08/2008 by matrix
'
'
ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
False, AllowFiltering:=True
Range("E6").Select
End Sub
Vây nếu trong trường hợp này thì em phải làm sao để vừa protec sheet ( chỉ chừa lại cells mình không muốn protec), vừa auto file được ạh.
-------
Bổ sung:
Khi em sort autofilter thì code lại thay đổi như sau:
Sub Macro1()
'
' Macro1 Macro
' Macro recorded 19/08/2008 by matrix
'
'
ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
False, AllowFiltering:=True
Range("F6").Select
Selection.AutoFilter Field:=5, Criteria1:="kt pc"
Range("F22").Select
Selection.AutoFilter Field:=5
Selection.AutoFilter Field:=6
Range("E6").Select
Selection.AutoFilter Field:=5, Criteria1:="K.toaùn tröôûng"
Range("G45").Select
Selection.AutoFilter Field:=5
Range("E6").Select
Application.WindowState = xlMinimized
Selection.AutoFilter Field:=5, Criteria1:="B?o v?"
End Sub

Thiệt là thiên biến vạn hóa.em bị gà mờ luôn rồi.
 
Lần chỉnh sửa cuối:
Mình không biết bạn Fillter bao nhiêu dữ liệu nữa, thôi thì bạn tự copy thêm code và fillter từ từ vậy. Đây là ví dụ để fillter theo mã số, bạn nhập 1 mã số vào thì nó lập tức nhảy ra dòng đó thôi, được không? Code nằm trong Sheet1 đó.
 

File đính kèm

Lần chỉnh sửa cuối:
Kính chào các bác.Sau khi đã được các bác giúp đỡ,Giờ em lại nảy sinh ý tưởng mới không biết có khả thi hay không.
Yêu cầu của em thế này:
1. Ngay khi nhập mã số vào ô màu vàng.khi nhấn Enter dấu nháy chuyển sang ô C3
2. Tại ô màu xanh. em muốn tại đây mình nhập ngày tháng vào thì dữ liệu ngày tháng sẽ được cập nhập xuống vị trí còn trống bắt đầu tính từ cột Giao lần 1... đến nhập kho. nếu cột giao lần 1 đã có dữ liệu ngày tháng thì nó sẽ bỏ qua và chạy sang cột giao lần 2...
vẫn tại ô màu xanh. khi em đã nhập dữ liệu cho cột (vi dụ cột lần 2) em muốn nhập thêm vào cột lần 3 thì em muốn tiếp tục gõ thêm lần nữa thi dữ liệu se vào ô giao lần 3
Sau khi nhập xong cho Lô hàng. Em tìm tên hàng mới và bắt đầu nhập thì dữ liệu các ô trước không được thay đổi chứ mất hết thì ... chết quá.

Em xin chân thành cảm ơn vì đã được giúp đỡ tận tình.
 

File đính kèm

Bác ndu ơi, em làm theo cách hướng dẫn của bác ở bài số #8, khi gõ mã số thì rất ok còn khi em xóa mã số trong ô điều kiện này thì mày trả về hiện trạng ban đầu không được, em chờ hoài mà máy chỉ bung ra được vài dòng rồi cứ chạy nhưng không bung hết dòng được. em nhấn escap thì máy hiện thông báo có 3 chọn lựa trong đó có 1 chữ end. File em có dữ liệu khoảng gần 1000kb, sheet mà em cần sd auto filter khoảng 1000 dòng. Không biết có thể nhanh được hơn không vậy bác
 
Vậy cũng dễ thôi! Bạn xem code mình bổ sung.
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)   If Target.Address = "$B$2" Then     Set DS = [A4].CurrentRegion     DS.AdvancedFilter Action:=1, CriteriaRange:=Range("B1:B2")     [COLOR=red][C2].Select[/COLOR]   End If   [COLOR=red]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    [/COLOR][COLOR=red] Next   End If[/COLOR] End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Bác Po_Pikachu ơi, vậy nếu cái file bác vừa up lên này có thể kết hợp chung với protec cell được không ạh ( tức là cũng nhập dữ liệu vào ô quy định và tự động ghi vào nơi mình muốn).
Về phần protect cell như các bác đã giúp đỡ là trong 1 sheet, vậy nay muốn cả file được không ạh.
Em đ1ung là đòi hỏi nhiều quá. Bác đừng buồn em nhé, mong được sự giúp đỡ.
 
Bạn xem file nha! Nếu bạn muốn Sheet nào khóa thì thêm lệnh protect và thêm password đặt kế bên thôi. Ví dụ: Tôi muốn khóa Sheet có tên là THN và HNB với password là DANH thì viết như sau:
Mã:
Sheets("THN").Protect "DANH" Sheets("HNB").Protect "DANH"
Cái này là sử dụng tên của sheet, còn sử dụng thứ tự của Sheet, như Sheet THN có thứ tự là Sheet1, Sheet HNB có thứ tự là Sheet3. Thì viết code như sau:
Mã:
Sheet1.Protect "DANH" Sheet3.Protect "DANH"
 

File đính kèm

Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom