Cấu trúc:
Instr(vị_trí_bắt_đầu_tìm,string1, string2, kiểu_so_sánh)
Tham số:
vị_trí_bắt_đầu_tìm : Tham số này có thể giản lược. Nếu bị giản lược nó sẽ bắt đầu tìm từ vị trí đầu tiên (=1) trong chuỗi ký tự string1 xem có xuất hiện string2 trong đó hay không.
string1: là chuỗi ký tự nguồn.
string2: là chuỗi ký tự mà ta muốn tìm kiếm xem nó có xuất hiện trong chuỗi ký tự string1 hay không.
kiểu_so_sánh: Có thể giản lược. Khi giản lược thì mặc định phân biệt chữ hoa hay chữ thường. Sẽ bàn tới ở cuối bài viết này.
Ta ví dụ:
Instr("ABDC","D") sẽ cho kết quả là 4. Ký tự "D" nằm ở vị trí thứ 4 trong chuỗi "ABCD".
Thông thường thì đối với VBA, kiểu chuỗi ký tự ít khi có giá trị là Null. Do đó bạn cũng không cần quan tâm các trường hợp Null được mô tả ở trên.
Hàm Instr rất tiện lợi vì khả năng sử dụng nhanh gọn.
Chúng ta chú ý, chúng ta có hàm Ucase(string) sẽ chuyển toàn bộ chữ cái có trong string thành chữ in hoa.
Ucase("abC") = "ABC"
Và Lcase("abC") = "abc" : Lcase thì ngược lại, sẽ chuyển toàn bộ chữ cái có trong string thành chữ in thường.
Vì vậy để khỏi phải nhớ kiểu so sánh, ta sử dụng:
Instr(Ucase(string1),Ucase(string2)) thì cũng tương tự như việc tìm string2 có xuất hiện trong string1 hay không mà không phân biệt in hoa hay in thường. Là vì dù in hoa hay in thường, thì chúng ta cũng đã biến đổi cả string1 và string2 thành kiểu in hoa và thực hiện tìm kiếm.
Tham khảo và dịch từ:
Instr(vị_trí_bắt_đầu_tìm,string1, string2, kiểu_so_sánh)
Tham số:
vị_trí_bắt_đầu_tìm : Tham số này có thể giản lược. Nếu bị giản lược nó sẽ bắt đầu tìm từ vị trí đầu tiên (=1) trong chuỗi ký tự string1 xem có xuất hiện string2 trong đó hay không.
string1: là chuỗi ký tự nguồn.
string2: là chuỗi ký tự mà ta muốn tìm kiếm xem nó có xuất hiện trong chuỗi ký tự string1 hay không.
kiểu_so_sánh: Có thể giản lược. Khi giản lược thì mặc định phân biệt chữ hoa hay chữ thường. Sẽ bàn tới ở cuối bài viết này.
Ta ví dụ:
Instr("ABDC","D") sẽ cho kết quả là 4. Ký tự "D" nằm ở vị trí thứ 4 trong chuỗi "ABCD".
Nội dung | Giá trị trả về |
Tham số string1 là rỗng "" | 0 |
Tham số string1 là Null | Null |
Tham số string2 là rỗng "" | Là vị trí mà ta chỉ định bắt đầu tìm kiếm |
Tham số string2 là Null | Null |
Không tìm thấy string2 xuất hiện trong string1 | 0 |
Giá trị tìm kiếm vượt quá độ dài của chuỗi string1 | 0 |
Mã:
Sub Sample1()
Dim String1 As String, String2 As String
String1 = "ABCDE"
String2 = "D"
MsgBox InStr(String1, String2)
End Sub
Mã:
Sub Sample4()
MsgBox InStr("ABCDE", "CD") ''Giá trị trả về là 3
End Sub
Mã:
Sub Sample7()
MsgBox InStr("abcd", "C") ''giá trị trả về là 0 vì phân biệt chữ hoa và chữ thường.
End Sub
Mã:
Sub Sample7()
MsgBox InStr(1, "abcd", "C", vbTextCompare) 'Giá trị trả về là 3, không phân biệt in hoa hay thường
End Sub
Ucase("abC") = "ABC"
Và Lcase("abC") = "abc" : Lcase thì ngược lại, sẽ chuyển toàn bộ chữ cái có trong string thành chữ in thường.
Vì vậy để khỏi phải nhớ kiểu so sánh, ta sử dụng:
Instr(Ucase(string1),Ucase(string2)) thì cũng tương tự như việc tìm string2 có xuất hiện trong string1 hay không mà không phân biệt in hoa hay in thường. Là vì dù in hoa hay in thường, thì chúng ta cũng đã biến đổi cả string1 và string2 thành kiểu in hoa và thực hiện tìm kiếm.
Tham khảo và dịch từ:
Bạn cần đăng nhập để thấy link