Hỏi về cách tổ chức dữ liệu để lọc, truy vấn

Liên hệ QC
Nó nằm trong file đính kèm của #15 đấy bạn. Bạn tải từ đấy tiện hơn
Xin lỗi nha. Tôi quên cả những bài đã gửi.

Sao đã mở nó ra mà không chép văn bản và dán vô đây.

Hãy chú ý Private Sub Worksheet_Change (sự kiện chạy khi nôi dung ô thay đổi) thôi.
Còn sub xxx chắc là tôi làm thử.

Nếu bạn mới làm quen với VBA thì cũng nên bỏ qua Private Sub Worksheet_SelectionChange (sự kiện chạy khi tha đổi ô chọn)

Và chắc bạn cũng kg biết chạy theo "vết" (tức chạy từng dòng để nhìn xem ct hoạt động thế nào.
Bạn cũng nên biết nếu desktop chỉ có 2 cửa sổ là excel và cửa sổ VBA thì có thể hiện cả 2 cửa sổ đó để xem (mỗi cửa sổ chiếm nửa màn hình)

Hãy xóa những dòng có nháy đơn ở đầu (là chú thích - chỉ để giải thích, nhưng có thể là câu lệnh để tham khảo cho các lệnh đang viết khác)
 
2. Đối với việc lọc cột F như bạn đã giải thích bên trên (#15), bạn đã linh hoạt chuyển đổi sang cột A, nhưng thực tế mình muốn nhập từ khóa tại ô F3 thì Excel lọc theo cột L thì sửa thế nào?
3. Trong bài mình đã có 1 Private Sub Worksheet_Change(ByVal target As Range) mà được tạm disable rồi, cái này mình cũng muốn dùng để giúp nhập liệu sẵn, vậy lồng ghép thế nào để xử lý 2 nhu cầu của mình

Sao không chọn cách nhập trên cột nào thì lọc theo cột đó??? Nếu bạn chấp nhận nhập trên cột nào thì lọc theo cột đó thì dòng cuối cùng trong đoạn code sau (If iC > 8 Then Exit Sub ) được thay bằng (If iC > 12 Then Exit Sub ) hoặc thêm dấu nháy ở đầu để nó thành chú thích ( ' If iC > 8 Then Exit Sub)
Riêng ý thứ 3 không hiểu hỏi gì

Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Unprotect
Dim bO As Boolean, iC&, nD$, sL&
If Target.Row <> 3 Then Exit Sub
iC = Target.Column
If iC > 8 Then Exit Sub
 
Riêng ý thứ 3 không hiểu hỏi gì
Trong file mình muốn theo dõi sự thay đổi của ô thuộc 2 range như sau:
1. Sự thay đổi nội dung của ô thuộc dòng 2 (phần tô màu, dùng để nhập keyword cho việc lọc)
2. Sự thay đổi nội dung của các ô cột J (tính từ J5). Khi ô thuộc cột J được nhập liệu, thì nhập luôn dữ liệu tương tự vào cột K.
'Private Sub Worksheet_Change(ByVal target As Range)​
'Application.ScreenUpdating = False​
'On Error Resume Next​
'Application.EnableEvents = False​
'If target.Rows.Count = 1 Then​
' With target.Rows > 4​
' Select Case target.Column​
' Case 10​
' ActiveSheet.Unprotect​
' If target.Offset(0, 1).Value = "" Then​
' target.Offset(0, 1).Value = target.Value​
' End If​
' End Select​
' End With​
'End If​
'Application.EnableEvents = True​
'End Sub​
Code trên rất tổng quát để mình có thể "theo dõi" bất cứ cột nào đó và bổ sung những yêu cầu phát sinh của mình. Khi gửi bài cho bạn, mình tạm thời cho dừng code này bằng cách thêm dấu nháy đầu dòng.
Nay code của bạn giúp cũng dùng sự kiện Worksheet_Change, mình muốn lồng ghép code của bạn và dòng code phía trên trong cùng 1 sự kiện Worksheet_Change. Mình đã thử lắp ghép mà không thành công
Xin cảm ơn
 
// Xin giúp đỡ sửa lại code trong sự kiện Worksheet_Change của file đính kèm

Chào bạn @haonlh và các anh chị trong diễn đàn
Sau khi lấy ý tưởng của những bài trên, mình thử lồng ghép code cũ của mình vào với nhau và thấy code không chạy như mong muốn thậm chí là không chạy, hoặc chạy lại ảnh hưởng phần khác. Trước đó khi để tách riêng chúng chạy tốt.
Do lắp ghép 1 cách vụng về nên mình không rõ lỗi ở đâu và sửa như nào
Rất mong được mọi người sửa giúp. Xin cảm ơn
Chúc mọi người có kỳ nghỉ vui vẻ
 

File đính kèm

  • Example.xlsb
    116.1 KB · Đọc: 4
Do lắp ghép 1 cách vụng về nên mình không rõ lỗi ở đâu và sửa như nào
Rất mong được mọi người sửa giúp.
Tôi chỉ sửa theo nghĩa không cjó lỗi cú pháp. Còn ý nghĩa của các lệnh thì không sửa. Gửi bạn file đính kèm.
 

File đính kèm

  • Example.xlsb
    109.1 KB · Đọc: 6
Tôi chỉ sửa theo nghĩa không cjó lỗi cú pháp. Còn ý nghĩa của các lệnh thì không sửa. Gửi bạn file đính kèm.
Code chạy tốt bạn ạ. Tuy nhiên có vấn đề sau:
Khi mình bấm nút màu cam tại cột L, thì nó báo lỗi về việc ô bị lock.
Mình cũng hiểu vấn đề này là do mình luôn muốn lock sheet sau mỗi lệnh và việc khi ấn nút cam và cho phép Windows ghi dữ liệu vào cột M và N là 1 lần kích hoạt sự kiện Worksheet_change.
Bạn có giải pháp gì cho vấn đề này không ?
Cảm ơn bạn
 
Câu lệnh gây lỗi là của Sub WriteText(Cll As Range)
CreateObject("Scripting.FileSystemObject").CreateTextFile(ActiveSheet.Range("A1") & "\" & sFile & ".txt").Write Replace(Cll.Offset(, -1), ChrW(10), vbNewLine)

Private Sub CommandButton1_Click() gọi Sub WriteText

Chỉ biết vậy thôi. Vì tôi không biết gì về "CreateObject"
 
Web KT
Back
Top Bottom