Cho hỏi hàm Tìm kiếm

  • Thread starter Thread starter hungvn
  • Ngày gửi Ngày gửi
Liên hệ QC

hungvn

Thành viên mới
Tham gia
29/4/07
Bài viết
49
Được thích
5
Tôi muốn tìm 1 số trong 1 ô Tìm kiếm đã định trước, sau khi ấn Enter thì con trỏ sẽ chạy về ô khác của dòng chứa dữ liệu muốn tìm. Cụ thể như file đính kèm. Thank!!!
 

File đính kèm

Dùng code đơn giản thế này nhé:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim FindRng As Range
  If Target.Address = "$D$2" Then
     Set FindRng = Range([B6], [B6].End(xlDown))
     FindRng.Find(Target).Select
  End If
End Sub
Thank bác, nhưng tôi muốn nó trỏ về cột D chứ không về cột B. Tôi đã thay B6 bằng D6 nhưng không đwợc.
Thì OFFSET qua 2 cột là được chứ gì
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim FindRng As Range
  If Target.Address = "$D$2" Then
     Set FindRng = Range([B6], [B6].End(xlDown))
     FindRng.Find(Target)[COLOR=Red][B].Offset(, 2)[/B][/COLOR].Select
  End If
End Sub
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Trong cùng 1 sheet đó, tương tự tôi muốn tìm thêm tại ô $F$2 nhưng không đwợc. Bác sử giúp.
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim FindRng As Range
  If Target.Address = "$D$2" Then
     Set FindRng = Range([B6], [B6].End(xlDown))
     FindRng.Find(Target).Offset(, 2).Select
  End If
   Dim FindRng As Range
  If Target.Address = "$F$2" Then
     Set FindRng = Range([B6], [B6].End(xlDown))
     FindRng.Find(Target).Offset(, 4).Select
  End If
End Sub
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Trong cùng 1 sheet đó, tương tự tôi muốn tìm thêm tại ô $F$2 nhưng không đwợc. Bác sử giúp.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim FindRng As Range
If Target.Address = "$D$2" Then
Set FindRng = Range([B6], [B6].End(xlDown))
FindRng.Find(Target).Offset(, 2).Select
End If
Dim FindRng As Range
If Target.Address = "$F$2" Then
Set FindRng = Range([B6], [B6].End(xlDown))
FindRng.Find(Target).Offset(, 4).Select
End If
End Sub
Viết thế không được rồi
Theo yêu cầu của bạn, tôi để ý thấy rằng:
- bạn gõ giá trị vào D2 thì tìm trong cột B nhưng select cell tại cột D
- bạn gõ giá trị vào F2 thì tìm trong cột B nhưng select cell tại cột F
Đúng chứ?
Nếu thế thì ta viết code như sau:
PHP:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim FindRng As Range
  If Not Intersect(Union([D2], [F2]), Target) Is Nothing Then
    Set FindRng = Range([B6], [B6].End(xlDown))
    Cells(FindRng.Find(Target).Row, Target.Column).Select
  End If
End Sub
Ngắn gọn
Muốn thêm cell gõ giá trị tìm nữa, ví dụ là cell E2 thì chỉ cần sửa:
Intersect(Union([D2], [F2]), Target)
thành:
Intersect(Union([D2], [E2], [F2]), Target)
hoặc đơn giãn là:
 
Lần chỉnh sửa cuối:
Upvote 0
Nhưng code đó tôi vẫn dùng mà.!!!
Thế thì tôi không thể giúp được rồi... (vì hỏng biết tình hình cụ thể trong file)
Tôi đoán trong 1 sheet đã có 1 sự kiện change dựa vào điều kiện gì đó ---> Giờ bạn muốn thêm vào 1 sự kiện change nữa.. đúng không?
Có lẽ bạn nên đưa file lên (có code), để xem cái code bạn đang dùng là thế nào (mới biết mà thêm vào chứ)
 
Upvote 0
Trong fỉlle cua tôi đang dùng code này:
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("E2:E10000")) Is Nothing Then
    If Target(1, 2).Value <> "" Then
        vbans = MsgBox("Da co du lieu roi . Ban co muon chep de len khong?")
        If vbans = vbOK Then
            With Target(1, 2)
            .Value = Now
            .EntireColumn.AutoFit
            End With
        End If
    Else
        With Target(1, 2)
            .Value = Now
            .EntireColumn.AutoFit
        End With
    End If
End If
End Sub
Code đó tôi vẫn đang dùng bình thường mà.

Cụ thể trong file đính kèm . Các bác xem hộ./-*+/
 

File đính kèm

Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Bạn có nhầm gì chăng
If Target.Cells.Count > 1 Then Exit Sub
Tôi nghĩ đoạn này dùng để tránh trường hợp xóa nhiều cell cùng 1 lúc ---> Sẽ bị báo lổi
-----------------
Còn vấn đề bạn hungvn vừa nêu về việc copy thêm code, tôi nghĩ bạn copy nối vào code củ chắc không có vấn đề
 
Lần chỉnh sửa cuối:
Upvote 0
Tôi đã copy thử nhưng bị báo lỗi đoạn
Private Sub Worksheet_Change(ByVal Target As Range)
 
Upvote 0
Tôi đã copy thử nhưng bị báo lỗi đoạn
Private Sub Worksheet_Change(ByVal Target As Range)
Ah... tôi quên nói:
Ý tôi nói copy nối vào code củ nghĩa là:
- Copy đoạn code của tôi, trừ đoạn đầu Private Sub.. và đoạn cuối End Sub (lấy phần ruột)
- Paste nối đuôi vào code của bạn
(lý nào trong 1 sheet lại có 2 cái Private Sub Worksheet_Change)
Tức chỉ code đoạn này thôi:
PHP:
  Dim FindRng As Range
  If Not Intersect(Union([D2], [F2]), Target) Is Nothing Then
    Set FindRng = Range([B6], [B6].End(xlDown))
    Cells(FindRng.Find(Target).Row, Target.Column).Select
  End If
<
 
Upvote 0
Bác cho tôi hỏi nếu tôi muồn tìm thêm ở trong cột F khi nhập giá trị vào ô F2 thì code như thế nào. Tôi đã thử thêm và thay đổi B6 thành F6 nhưng không được.
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom