Trả về một Biến_thể (Dài) xác định vị trí của một chuỗi xuất hiện lần đầu tiên trong một chuỗi khác.
Cú pháp
InStr([bắt, ]chuỗi_1, chuỗi_2 [, so sánh ] )
Cú pháp của hàm InStr có các đối số sau:
| Đối số | Mô tả |
|---|---|
| bắt đầu | Không bắt buộc. Biểu thức số xác định vị trí bắt đầu cho mỗi tìm kiếm. Nếu bị bỏ qua, tìm kiếm sẽ bắt đầu từ vị trí ký tự đầu tiên. Nếu điểm bắt đầu chứa Null, sẽ xuất hiện lỗi. Bắt buộc phải có đối số bắt_đầu nếu so_sánh được xác định. |
| chuỗi_1 | Bắt buộc. Biểu thức chuỗi đang được tìm kiếm. |
| chuỗi_2 | Bắt buộc. Biểu thức chuỗi tìm kiếm. |
| so_sánh | Không bắt buộc. Xác định loại so sánh chuỗi. Nếu so_sánh chứa Null, sẽ xuất hiện lỗi. Nếu so sánh bị bỏ qua, thiết đặt OptionCompare sẽ quyết định loại so sánh. Xác định một LCID (LocaleID) hợp lệ để sử dụng các quy tắc dành riêng cho bản địa trong quá trình so sánh. |
Mẹo
Bộ tạo Biểu thức có IntelliSense để bạn có thể xem những tham đối mà biểu thức yêu cầu.
Cài đặt
Các thiết đặt đối số so sánh gồm:
| Hằng số | Value | Mô tả |
|---|---|---|
| vbUseCompareOption | -1 | Thực hiện so sánh bằng cách sử dụng thiết đặt của câu lệnh Option Compare . |
| vbBinaryCompare | 0 | Thực hiện so sánh nhị phân. |
| vbTextCompare | 1 | Thực hiện so sánh văn bản. |
Giá trị Trả về
| If | InStr trả về |
|---|---|
| string1 có độ dài bằng 0 | 0 |
| string1 là Null | Null |
| string2 có độ dài bằng 0 | bắt đầu |
| string2 là Null | Null |
| không tìm thấy chuỗi_2 | 0 |
| string2 nằm trong string1 | Vị trí tìm thấy kết quả khớp |
| chuỗi bắt đầu > 2 | 0 |
Chú thích
Hàm InStrB được sử dụng với dữ liệu byte chứa trong một chuỗi. Thay vì trả về vị trí ký tự của lần xuất hiện đầu tiên của một chuỗi trong một chuỗi khác, InStrB trả về vị trí byte.
Ví dụ
Sử dụng hàm InStr trong biểu thức Bạn có thể sử dụng InStr ở bất kỳ nơi nào bạn có thể sử dụng biểu thức. Ví dụ: nếu bạn muốn tìm vị trí của dấu chấm đầu tiên (.) trong trường có chứa địa chỉ IP (có tên IPAddress), bạn có thể sử dụng InStr để tìm nó, như sau:
InStr(1,[IPAddress],".")
Hàm InStr kiểm tra từng giá trị trong trường IPAddress và trả về vị trí của kỳ đầu tiên. Do đó, nếu phần đầu tiên của địa chỉ IP là 10, hàm sẽ trả về giá trị 3.
Sau đó, bạn có thể sử dụng các hàm khác, hoạt động trên đầu ra của hàm InStr , để trích xuất phần địa chỉ IP trước giai đoạn đầu tiên, như thế này:
Left([IPAddress],(InStr(1,[IPAddress],".")-1))
Trong ví dụ này, InStr(1,[IPAddress],".") Trả về vị trí của kỳ thứ nhất. Trừ 1 xác định có bao nhiêu ký tự trước dấu chấm đầu tiên, trong trường hợp này là 2. Sau đó, hàm Left sẽ trích xuất số ký tự đó từ phần bên trái của trường IPAddress, trả về giá trị 10.
Sử dụng InStr trong mã VBA
Lưu ý
Các ví dụ sau thể hiện cách sử dụng hàm này trong mô-đun Visual Basic for Applications (VBA).
Ví dụ này sử dụng hàm InStr để trả về vị trí của một chuỗi xuất hiện lần đầu tiên trong một chuỗi khác.
Dim SearchString, SearchChar, MyPos
SearchString ="XXpXXpXXPXXP" ' String to search in.
SearchChar = "P" ' Search for "P".
' A textual comparison starting at position 4. Returns 6.
MyPos = Instr(4, SearchString, SearchChar, 1)
' A binary comparison starting at position 1. Returns 9.
MyPos = Instr(1, SearchString, SearchChar, 0)
' Comparison is binary by default
' (last argument is omitted).
MyPos = Instr(SearchString, SearchChar) ' Returns 9.
MyPos = Instr(1, SearchString, "W") ' Returns 0.