Tìm văn bản trong chuỗi (Hàm INSTR) - Ví dụ về mã VBA

Hàm INSTR

Hàm Hướng dẫn VBA kiểm tra xem một chuỗi văn bản có được tìm thấy trong một chuỗi văn bản khác hay không. Nó trả về 0 nếu không tìm thấy văn bản. Nếu không, nó trả về vị trí ký tự nơi văn bản được tìm thấy.

Chức năng hướng dẫn thực hiện chính xác diêm. Toán tử VBA Like có thể được sử dụng thay thế để thực hiện đối sánh không chính xác / đối sánh mẫu bằng cách sử dụng Ký tự đại diện.

Ví dụ về hướng dẫn

Đoạn mã sau tìm kiếm trong chuỗi “Tìm trong chuỗi này” cho từ “Nhìn”. Hàm hướng dẫn trả về 1 vì văn bản được tìm thấy ở vị trí đầu tiên.

123 Sub FindSomeText ()MsgBox InStr ("Tìm trong chuỗi này", "Tìm")Kết thúc Sub

Ví dụ thứ hai này trả về 7 vì văn bản được tìm thấy bắt đầu ở vị trí thứ 7:

123 Sub FindSomeText2 ()MsgBox InStr ("Không tìm trong chuỗi này", "Nhìn")Kết thúc Sub

Quan trọng! Chức năng hướng dẫn là trường hợp nhạy cảm theo mặc định. Điều này có nghĩa là "nhìn" sẽ không khớp với "Nhìn". Để làm cho test không phân biệt chữ hoa chữ thường, hãy đọc phần bên dưới.

Cú pháp hướng dẫn

Cú pháp cho chức năng hướng dẫn như sau:

1 Hướng dẫn ([bắt đầu], chuỗi, chuỗi con, [so sánh])

[bắt đầu] (tùy chọn) - Đối số tùy chọn này là vị trí bắt đầu của tìm kiếm. Nhập 1 để bắt đầu tìm kiếm từ vị trí 1 (hoặc để trống). Nhập 5 để bắt đầu tìm kiếm từ vị trí 5. Quan trọng! Hàm INSTR tính toán vị trí ký tự bằng cách đếm từ 1 KHÔNG phải từ vị trí [bắt đầu].

dây - Chuỗi văn bản cần tìm kiếm.

chuỗi con - Chuỗi văn bản cần tìm trong chuỗi chính.

[so sánh] (tùy chọn) - Theo mặc định, Guid có phân biệt chữ hoa chữ thường. Bằng cách đặt đối số này, bạn có thể làm cho hướng dẫn không phân biệt chữ hoa chữ thường:

Đối số vb Giá trị

Số nguyên đối số Sự miêu tả
vbBinaryCompare

0

(Mặc định) Phân biệt chữ hoa chữ thường

vbTextCompare

1

Không phân biệt chữ hoa chữ thường

vbDatabaseCompare

2

Chỉ truy cập MS. Sử dụng thông tin trong cơ sở dữ liệu để thực hiện so sánh.

Hướng dẫn vị trí bắt đầu

Vị trí bắt đầu hướng dẫn cho phép bạn chỉ ra vị trí ký tự nơi bạn sẽ bắt đầu tìm kiếm. Tuy nhiên, hãy ghi nhớ rằng đầu ra hướng dẫn sẽ luôn được tính từ 1.

Ở đây chúng tôi đặt vị trí bắt đầu thành 3 để bỏ qua B đầu tiên:

123 Sub Guid_StartPosition ()MsgBox InStr (3, "ABC ABC", "B")Kết thúc Sub

Kết quả là 6 vì chữ B thứ hai là ký tự thứ 6 trong chuỗi.

Kiểm tra INSTR phân biệt chữ hoa chữ thường

Theo mặc định, VBA xử lý “L” khác với “l”. Nói cách khác, VBA phân biệt chữ hoa chữ thường. Điều này đúng với tất cả các hàm văn bản. Để làm cho VBA không phân biệt chữ hoa chữ thường, hãy đặt đối số [so sánh] thành 1 hoặc vbTextCompare.

123 Public Sub FindText_IgnoreCase ()MsgBox InStr (1, "Không tìm trong chuỗi này", "nhìn", vbTextCompare)Kết thúc Sub

Ngoài ra, bạn có thể thêm Văn bản So sánh Tùy chọn vào đầu mô-đun mã của mình:

1 Tùy chọn So sánh Văn bản
12345 Tùy chọn So sánh Văn bảnPublic Sub FindText_IgnoreCase2 ()MsgBox InStr ("Không tìm trong chuỗi này", "nhìn")Kết thúc Sub

Tùy chọn So sánh Văn bản sẽ ảnh hưởng đến tất cả mã trong mô-đun đó. Cá nhân tôi đặt điều này ở đầu bất kỳ mô-đun nào liên quan đến văn bản bởi vì tôi không bao giờ quan tâm đến sự khác biệt về chữ hoa và chữ thường.

Chức năng hướng dẫn

Chức năng hướng dẫn tìm kiếm từ bên trái. Thay vào đó, bạn có thể tìm kiếm từ bên phải bằng cách sử dụng Chức năng hướng dẫn. Hàm GuideRev hoạt động tương tự như hàm lệnh.

123 Sub FindSomeText_FromRight ()MsgBox InStrRev ("Tìm trong chuỗi này", "Nhìn")Kết thúc Sub

Cũng giống như chức năng Hướng dẫn, hàm này sẽ trả về 1 vì chỉ có một trường hợp “Nhìn” trong văn bản. Nhưng nếu chúng ta thêm "Cái nhìn" thứ hai, bạn sẽ thấy rằng nó trả về vị trí của "Cái nhìn" ngoài cùng bên phải:

123 Sub FindSomeText_FromRight ()MsgBox InStrRev ("Tìm trong chuỗi này. Nhìn", "Nhìn")Kết thúc Sub

Tiếp theo, chúng tôi sẽ xem xét thêm các ví dụ về hướng dẫn.

Ví dụ về chuỗi

Nếu chuỗi có chứa chuỗi con

Ở đây chúng ta sẽ sử dụng câu lệnh If để kiểm tra xem một chuỗi có chứa một chuỗi văn bản con hay không:

123456789 Public Sub FindSomeText ()Nếu InStr ("Tìm trong chuỗi này", "nhìn") = 0 ThìMsgBox "Không khớp"KhácMsgBox "Ít nhất một kết quả phù hợp"Kết thúc nếuKết thúc Sub

Tìm chuỗi văn bản trong một ô

Bạn cũng có thể tìm thấy một chuỗi trong một ô:

12345 Sub Find_String_Cell ()Nếu InStr (Phạm vi ("B2"). Giá trị, "Tiến sĩ")> 0 ThìPhạm vi ("C2"). Giá trị = "Bác sĩ"Kết thúc nếuKết thúc Sub

Hoặc lặp qua một loạt các ô để kiểm tra xem các ô có chứa một số văn bản hay không:

12345678910 Sub Search_Range_For_Text ()Làm mờ ô dưới dạng phạm viĐối với mỗi ô trong phạm vi ("b2: b6")Nếu InStr (cell.Value, "Dr.")> 0 Thìcell.Offset (0, 1) .Value = "Bác sĩ"Kết thúc nếuÔ tiếp theoKết thúc Sub

Tìm vị trí của một ký tự trong một chuỗi

Đoạn mã này sẽ tìm vị trí của một ký tự trong một chuỗi và gán vị trí cho một biến:

1234 Sub Find_Char ()Dim n As Longn = InStr ("Đây Nhìn Đây", "L")Kết thúc Sub

Chuỗi tìm kiếm cho Word

Mã này sẽ tìm kiếm một chuỗi cho một từ:

12345678910 Sub Search_String_For_Word ()Dim n As Longn = InStr ("Đây Nhìn Đây", "Nhìn")Nếu n = 0 ThìMsgBox "Không tìm thấy từ"KhácMsgBox "Từ tìm thấy trong vị trí:" & nKết thúc nếuKết thúc Sub

Nếu biến chứa chuỗi

Mã này sẽ kiểm tra xem một biến chuỗi có chứa một chuỗi văn bản hay không:

12345678 Biến phụ_Contains_String ()Dim str As Stringstr = "Nhìn ở đây"Nếu InStr (str, "Tại đây")> 0 ThìMsgBox "Đã tìm thấy ở đây!"Kết thúc nếuKết thúc Sub

Hướng dẫn và Chức năng Bên trái

Hướng dẫn có thể được sử dụng cùng với các chức năng văn bản khác như Left, Right, Len và Mid để cắt văn bản.

Với chức năng Left, bạn có thể xuất văn bản trước một chuỗi văn bản:

1234567891011 Hướng dẫn phụ ()Dim str As StringDim n As Longstr = "Nhìn ở đây"n = InStr (str, "Đây")MsgBox Left (str, n - 1)Kết thúc Sub

Sử dụng hướng dẫn trong Microsoft Access VBA

Tất cả các ví dụ trên đều hoạt động hoàn toàn giống nhau trong Access VBA cũng như trong Excel VBA.

Để tìm hiểu thêm, hãy đọc bài viết của chúng tôi: Các hàm văn bản VBA

wave wave wave wave wave