[Nhờ giúp đỡ] Viết giúp macro kiểm tra text nhập vào có trong cột A, sheet 1 không? (1 người xem)

Liên hệ QC

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

camatoan

Thành viên mới
Tham gia
29/6/12
Bài viết
2
Được thích
0
Chào cả nhà,
Mình vừa mới làm quen với VBA trong Excel nên chưa có kinh nghiệm nhiều, nhưng rất thích VBA trong Excel }}}}}
Mong cả nhà viết giúp mình macro với yêu cầu bên dưới:

- Người dùng input vào 1 text bất kỳ
- Chạy macro kiểm tra xem text đó có trong cột A, thuộc sheet 1 không?
- Nếu có rồi thì thông báo: " co text nay trong cot A, tai dong xx "
- Nếu chưa có thì thêm text này vào cột A, tại dòng cuối cùng và hiển thị thông báo "da them text này vào cot A, dong xx"

* Mình đính kèm thêm file Excel bên dưới để cả nhà test thử nha:
VD:
+ Input 0001 --> hiển thị thông báo: " co text nay trong cot A, tai dong 01 "
+ Input 0035 --> hiển thị thông báo: "da them text này vào cot A, dong 16"

* Chú ý: các dãy số 0001, 0002... có format là "text", KHÔNG phải "number"

Cảm ơn cả nhà nhiều nhiều nha
 

File đính kèm

- bạn tải file đính kèm về kiểm tra xem có đúng yêu cầu ko nhé (cho chạy Macro)
- nhập giá trị vào ô E5, F5 -> click Button 1 --> xem kết quả

Link: https://www.mediafire.com/?8jqcim6e28gt389
 
Lần chỉnh sửa cuối:
Upvote 0
Theo như tôi nghĩ cái khó của bạn đó là làm sao để sự kiện nhập 1 text bất kỳ thuộc 1 cell bất kỳ được chuyển vào cột A.
Vậy để là điều này bạn cần tìm hiểu về các điểm sau

1/ Sự kiện trên Sheet
2/ Phương thức Find
3/ Cách điền dữ liệu tương ứng vào vùng tìm kiếm.

Bạn có thể tham khảo Code sau để tuỳ biến (Code chưa bắt lỗi cho các trường hợp)
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim FRng As Range
    Dim Fnd As Range
    'Vung tim kiem
    Set FRng = Range([A1], [A1].End(xlDown))
    'Cell tim kiem
    Set Fnd = FRng.Find(Target, , xlFormulas, xlWhole)
    If Target <> "" Then
        If Fnd Is Nothing Then
            Application.EnableEvents = False
            'Ghi ket qua vao cot A
            [A65536].End(xlUp).Offset(1) = Target.Text
            MsgBox "da them text này vào cot A, dong " & [A65536].End(xlUp).Row
            Application.EnableEvents = True
        Else
            MsgBox "co text nay trong cot A, tai dong " & Fnd.Row
        End If
    End If
End Sub
 
Upvote 0
Theo như tôi nghĩ cái khó của bạn đó là làm sao để sự kiện nhập 1 text bất kỳ thuộc 1 cell bất kỳ được chuyển vào cột A.
Vậy để là điều này bạn cần tìm hiểu về các điểm sau

1/ Sự kiện trên Sheet
2/ Phương thức Find
3/ Cách điền dữ liệu tương ứng vào vùng tìm kiếm.

Bạn có thể tham khảo Code sau để tuỳ biến (Code chưa bắt lỗi cho các trường hợp)
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim FRng As Range
    Dim Fnd As Range
    'Vung tim kiem
    Set FRng = Range([A1], [A1].End(xlDown))
    'Cell tim kiem
    Set Fnd = FRng.Find(Target, , xlFormulas, xlWhole)
    If Target <> "" Then
        If Fnd Is Nothing Then
            Application.EnableEvents = False
            'Ghi ket qua vao cot A
            [A65536].End(xlUp).Offset(1) = Target.Text
            MsgBox "da them text này vào cot A, dong " & [A65536].End(xlUp).Row
            Application.EnableEvents = True
        Else
            MsgBox "co text nay trong cot A, tai dong " & Fnd.Row
        End If
    End If
End Sub

Dùng phương thức Find thì giới hạn vùng tìm làm gì cho mất công. Xơi hết cột A luôn cho gọn code. Dù sao thì code cũng bắt đầu từ dòng đầu và dừng lại tại dòng có dữ liệu cần tìm mà.
 
Upvote 0
Cảm ơn tất cả mọi người đã đã giúp đỡ.
Đặc biệt là anh "phucbugis".
Mình đã test và chạy được rồi :D
Tuy nhiên, vì mới bắt đầu tìm hiểu về VBA trong Excel nên hiện tại mình vẫn chưa rõ hết ý nghĩa các dòng code anh viết.
--> Nếu được, nhờ anh "phucbugis" ghi chú thêm ý nghĩa các dòng code va gửi giúp minh qua email bên dưới nha:
( manhtoanhk04@yahoo.com)

- Tương tự, mình cũng sẽ cố gắng tìm hiểu thêm về code của anh "dhn46" , cũng như góp ý của anh "quanghai1969".
Thanks all again!
 
Upvote 0
Cảm ơn tất cả mọi người đã đã giúp đỡ.
Đặc biệt là anh "phucbugis".
Mình đã test và chạy được rồi :D
Tuy nhiên, vì mới bắt đầu tìm hiểu về VBA trong Excel nên hiện tại mình vẫn chưa rõ hết ý nghĩa các dòng code anh viết.
--> Nếu được, nhờ anh "phucbugis" ghi chú thêm ý nghĩa các dòng code va gửi giúp minh qua email bên dưới nha:
( manhtoanhk04@yahoo.com)

- Tương tự, mình cũng sẽ cố gắng tìm hiểu thêm về code của anh "dhn46" , cũng như góp ý của anh "quanghai1969".
Thanks all again!

hic, làm thì nhanh chứ "giải thích" thì mình kém lắm -0-/.

các code trong file đó cũng khá đơn giản bạn ah, bạn tham khảo + "trải nghiệm" 4 link sau, nếu ko hiểu chỗ nào nữa thì hỏi tiếp nhé.

- Chập chững đến VBA!
- Tổng hợp về phương thức tìm kiếm FIND (Find Method)
- Cách chọn ô/dải ô bằng quy trình Visual Basic trong Excel
- giải thích đoạn code của HTN.

riêng trường hợp: Tìm giá trị ô cuối cùng của 1 cột, thì có 4 cách:
#1 Nếu dùng Range
#1.1 - Range("A" & Rows.Count).End(xlUp).Select
#1.2 - Range("A1048576").End(xlUp).Select

#2 Nếu dùng Cells
#2.1 - Cells(Rows.Count, "A").End(xlUp).Select
#2.2 - Cells(1048576, 1).End(xlUp).Select

bạn để ý 1 điểm khác nhau của #1 và #2, nếu viết theo #1 thì sẽ được gợi ý công thức khi viết lệnh.
26-03-14 9-29-00 AM.jpg
 
Lần chỉnh sửa cuối:
Upvote 0
Upvote 0
Web KT

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

Back
Top Bottom