Hàm Excel VBA InStr
Hướng dẫn trong VBA được sử dụng để tìm ra vị trí của một chuỗi con đã cho trong một chuỗi sau khi chúng ta chỉ định phương thức so sánh cho hàm, có bốn phương pháp so sánh khác nhau cho hàm này, hàm này là một hàm chuỗi nhưng kết quả trả về của hàm là số nên đầu ra của hàm này là một biến số nguyên.
Chuỗi trong VBA không là gì ngoài một chuỗi các ký tự, tức là tất cả các văn bản được cung cấp với dấu ngoặc kép được coi là chuỗi. Hàm InStr là một hàm văn bản tích hợp được sử dụng để thao tác với các Chuỗi. Ví dụ: - Nếu bạn muốn trích xuất một chuỗi con từ một câu hoặc nếu bạn muốn áp dụng các thay đổi thiết kế phông chữ cho một chuỗi cụ thể trong một chuỗi ký tự hoặc nếu bạn muốn tìm vị trí của một ký tự và nhiều khả năng khác, bạn có thể sử dụng InStr.

Cú pháp

Nó có 4 đối số, như trong hình dưới đây.
- (Bắt đầu): Điều này không bắt buộc. Đây là giá trị số mà chúng ta cần chỉ định từ vị trí nào của chuỗi Hàm hướng dẫn bắt đầu tìm kiếm văn bản được cung cấp. Ví dụ: nếu bạn muốn tìm kiếm ký tự “a” trong từ “Bangalore” từ vị trí thứ 3 , chúng ta cần cho biết vị trí bắt đầu của chức năng hướng dẫn là 3. Vì vậy, từ vị trí thứ 3 , ký tự “a” là ở vị trí thứ 5 . Nếu bạn bỏ qua tham số này, giá trị mặc định là 1.
- Chuỗi 1: Đây là chuỗi thực sự mà chúng tôi đang cung cấp, tức là từ văn bản này, chúng tôi đang cố gắng tìm chuỗi con. Ví dụ: nếu bạn đang tìm kiếm chuỗi “a” trong “Bangalore”, chuỗi 1 ở Bangalore.
- Chuỗi 2: Đây không là gì ngoài chuỗi mà chúng ta đang tìm kiếm. Ví dụ: nếu bạn đang tìm kiếm chuỗi “a” trong “Bangalore”, thì Chuỗi 2 là a .
- (So sánh): Đây lại là một đối số tùy chọn. Có ba loại tùy chọn có sẵn trong đối số (so sánh).

- vbBinaryCompare: Đây không phải là một tìm kiếm phân biệt chữ hoa chữ thường đối với chuỗi con (chuỗi 2) trong Chuỗi 1. Ví dụ: nếu chúng ta đang tìm kiếm “a” trong từ “Bangalore”, thì kết quả là Guid sẽ trả về 2 và nếu bạn đang tìm kiếm “A” trong từ “Bangalore”, kết quả là Guid sẽ trả về 0 vì chuỗi được cung cấp là giá trị chữ hoa.
Chúng ta cũng có thể đặt không (0) làm đối số.
vbTextCompare: Đây không phải là một tìm kiếm phân biệt chữ hoa chữ thường của chuỗi 2 trong chuỗi 1. Ví dụ: nếu chúng tôi đang tìm kiếm “a” trong từ “Bangalore”, thì kết quả là Guid sẽ trả về 2 và nếu bạn đang tìm kiếm “ A ” trong từ “ Bangalore ”, Guid cũng sẽ trả về 2. Logic là A = a, B = b, C = c, v.v….
Chúng ta cũng có thể đặt một (1) làm đối số.
vbDatabaseCompare: Điều này được sử dụng để so sánh thông tin từ cơ sở dữ liệu của bạn, tức là cơ sở dữ liệu Microsoft Access.
Chúng ta cũng có thể đặt một (-1) làm đối số.
5 ví dụ hàng đầu về việc sử dụng chức năng hướng dẫn VBA
Ví dụ 1
Hãy bắt đầu với ví dụ đầu tiên. Trong từ Bangalore, hãy tìm vị trí của ký tự a.
Đoạn mã dưới đây sẽ thực hiện nhiệm vụ cho chúng tôi.
Mã:
Sub Guid_Example1 () Dim i As Variant i = InStr ("Bangalore", "a") MsgBox i End Sub
Bây giờ hãy chạy mã VBA đã cho ở trên bằng phím F5 hoặc bạn cũng có thể chạy mã này theo cách thủ công, như được hiển thị trong ảnh chụp màn hình bên dưới.

Đầu ra:

Ví dụ số 2
Bây giờ trong từ Bangalore, hãy tìm vị trí của ký tự “a” từ vị trí thứ ba.
Đoạn mã dưới đây sẽ thực hiện nhiệm vụ cho chúng tôi.
Mã:
Sub Guid_Example2 () Dim i As Variant i = InStr (3, "Bangalore", "a") MsgBox i End Sub
Để chạy mã đã cho ở trên, bạn có thể sử dụng phím F5 hoặc bạn cũng có thể chạy mã này theo cách thủ công, như được hiển thị trong ảnh chụp màn hình bên dưới.

Đầu ra:

Bây giờ trong hình ảnh trên, hãy nhìn vào sự khác biệt so với mã trước đó. Vì chúng tôi đã đề cập đến vị trí bắt đầu của ký tự là 3, nên nó đã bỏ qua ký tự đầu tiên “a” ở vị trí thứ 2 .
Ví dụ # 3
Bây giờ chúng ta sẽ thấy tìm kiếm phân biệt chữ hoa chữ thường. Trong từ Bangalore, hãy tìm chữ cái “A.”
Đối với điều này, chúng ta cần cung cấp đối số so sánh dưới dạng vbBinaryCompare.
Mã:
Sub Guid_Example3 () Dim i As Variant i = InStr (1, "Bangalore", "A", vbBinaryCompare) MsgBox i End Sub
Bây giờ hãy chạy mã này bằng Phím F5 hoặc bạn cũng có thể chạy mã này theo cách thủ công.

Đầu ra:

Vì chúng tôi đã cung cấp đối số so sánh dưới dạng vbBinaryCompare nên hàm hướng dẫn trả về kết quả là 0 vì không tồn tại chữ cái viết hoa “A” .
Ví dụ # 4
Bây giờ chúng ta sẽ thấy thêm một tìm kiếm phân biệt chữ hoa chữ thường. Trong từ Bangalore, hãy tìm chữ cái “A.” Ví dụ trước trả về kết quả là 0.
Để khắc phục cách tiếp cận phân biệt chữ hoa chữ thường ở đây, chúng ta cần cung cấp đối số so sánh là vbTextCompare.
Mã:
Sub Guid_Example4 () Dim i As Variant i = InStr (1, "Bangalore", "A", vbTextCompare) MsgBox i End Sub
Chạy ngay bây giờ, mã này bằng phím F5 hoặc bạn cũng có thể chạy mã này theo cách thủ công.

Đầu ra:

Ví dụ # 5
Now we will see the advanced level of Instr function. If you have many sheets that have a more or less similar name and you want to hide all those sheets at once, we can use the below code to hide a specific sheet.
For example, I have 5 sheets named Summary 1, Summary 2, Summary 3, Summary 4, and Data Sheet.

Now I want to hide all those sheets which have the word “Summary.” Use the below code to hide all the sheets which have the word Summary in its name.
Code:
Sub To_Hide_Specific_Sheet() Dim Ws As Worksheet For Each Ws In ActiveWorkbook.Worksheets If InStr(Ws.Name, "Summary")> 0 Then Ws.Visible = xlSheetVeryHidden End If Next Ws 'InStr function looks for word or phrase in the sheet name 'If it finds then it will be hidden End Sub
Now Run, this code using the F5 Key, or you can also run this code manually and see the Output.

Similarly, in order to unhide all those sheets, use the below code.
Code:
Sub To_UnHide_Specific_Sheet() Dim Ws As Worksheet For Each Ws In ActiveWorkbook.Worksheets If InStr(Ws.Name, "Summary")> 0 Then Ws.Visible = xlSheetVisible End If Next Ws 'InStr function looks for word or phrase in the sheet name 'If it finds then it will be hidden End Sub
Now Run, this code using the F5 Key, or you can also run this code manually and see the Output.

Things to Remember
- Instr is a case sensitive function. In order to eliminate this case sensitive issue, you need to supply the (compare) argument as.
- If you are searching for case sensitive character, you need to supply the (compare) argument as, by default, VBA takes this as the argument even if you do not supply.
- Hướng dẫn là một hàm VBA, do đó bạn không thể sử dụng nó trong trang tính excel giống như các công thức tích hợp sẵn khác.
- Nếu hàm không tìm thấy Chuỗi 2, kết quả sẽ là không.