Hàm thao tác chuỗi VBA & Operaxoắn
⚡ Tóm tắt thông minh
Các hàm thao tác chuỗi trong VBA và Operacác tors kết hợp, đo lường và extracVăn bản t bên trong macro Excel. Trang này giải thích toán tử nối chuỗi, các hàm Left, Right, Mid, Len và InStr, việc tách và ghép chuỗi, cũng như các lỗi thường gặp nhất gây ra lỗi mã chuỗi.

Chuỗi VBA Operaxoắn
Dữ liệu chuỗi được sử dụng để chứa dữ liệu được tạo thành từ số, ký tự và ký hiệu. “Tháng 2015 năm XNUMX” là một ví dụ về dữ liệu chuỗi. Nó được tạo thành từ
- Nhân vật (tháng 7)
- Biểu tượng (-)
- Numbers (2015)
Toán tử chuỗi được sử dụng để thao tác dữ liệu chuỗi. Ví dụ: bạn có thể ghép giá trị của tháng 2015-3 từ 2015 chữ cái đầu tiên của tháng và năm như “Jul-XNUMX”.
Bảng sau đây hiển thị toán tử nối chuỗi VBA.
| S / N | Operator | Mô tả Chi tiết | Ví dụ | Đầu ra |
|---|---|---|---|---|
| 1 | & | Concatenate: Toán tử này dùng để nối các chuỗi lại với nhau | “John” & “Doe” | John Doe |
Nguồn ví dụ Code
MsgBox "John " & "Doe", vbOKOnly, "Concatenate Operator"
Thực hiện đoạn mã trên sẽ tạo ra kết quả sau
Dấu và (&) không phải là ký hiệu duy nhất được dùng để nối văn bản, và sự khác biệt giữa hai ký hiệu này rất quan trọng khi có sự xuất hiện của các con số.
Sự khác biệt giữa & và + trong phép nối chuỗi
VBA chấp nhận cả dấu và (&) và dấu cộng (+) giữa hai giá trị văn bản, vì vậy người mới bắt đầu thường coi chúng là có thể thay thế cho nhau. Tuy nhiên, chúng hoạt động khác nhau ngay khi một trong hai toán hạng là số hoặc giá trị rỗng, và chỉ có một trong hai là an toàn.
| Hành vi | & (Ký hiệu và) | + (Thêm) |
|---|---|---|
| Hai giá trị văn bản | Tham gia cùng họ: “Guru” & “99” trả về Guru99 | Tham gia cùng họ: “Guru” + “99” trả về Guru99 |
| Văn bản và một con số | Chuyển đổi số thành văn bản: “Tuổi ” & 30 trả về Tuổi 30 | Gây ra lỗi không khớp kiểu dữ liệu. |
| Hai chuỗi số | “10” và “5” trả về 105 | “10” + “5” có thể cộng và trả về 15 |
| Giá trị rỗng | Coi Null là chuỗi rỗng. | Trả về Null và loại bỏ toàn bộ kết quả. |
💡 Mẹo: Luôn sử dụng dấu và (&) để nối chuỗi và chỉ sử dụng dấu cộng (+) cho các trường hợp khác. các phép tính toán họcHãy đặt một khoảng trắng trước và sau dấu và (&), vì VBA sẽ hiểu cú pháp Total& là một ký tự khai báo kiểu dữ liệu Long.
Hàm thao tác chuỗi VBA
Thao tác chuỗi VBA là một yếu tố quan trọng trong Excel VBA cho lập trình Macro và các thao tác trên chuỗi. Excel cung cấp nhiều loại hàm Thao tác chuỗi VBA khác nhau như:
- Còn lại: được dùng để ví dụtracký tự t từ phía bên trái của chuỗi
- Đúng: được dùng để ví dụtracký tự t từ phía bên phải của chuỗi
- ở giữa: được dùng để ví dụtracmột chuỗi con từ giữa một chuỗi
- Len: được sử dụng để tìm độ dài của một chuỗi
- trongStr: được sử dụng để tìm vị trí của chuỗi con trong chuỗi
- Tỉa: được sử dụng để loại bỏ khoảng trắng ở cả hai đầu của chuỗi.
- Thay thế: được sử dụng để hoán đổi mọi lần xuất hiện của một chuỗi con này với một chuỗi con khác.
- UCase / LCase: được sử dụng để chuyển đổi chuỗi thành chữ hoa hoặc chữ thường.
Bảng dưới đây hiển thị cú pháp của từng hàm kèm theo ví dụ minh họa, giúp bạn có thể sao chép trực tiếp mẫu này vào macro.
| Chức năng | cú pháp | Ví dụ | Đầu ra |
|---|---|---|---|
| Còn lại | Trái (chuỗi, độ dài) | Trái (“Tháng 7 năm 2015”, 3) | Tháng Bảy |
| Đúng | Phải (chuỗi, độ dài) | Phải (“Tháng 7 năm 2015”, 4) | 2015 |
| ở giữa | Giữa (chuỗi, bắt đầu, độ dài) | Giữa (“Tháng 7 năm 2015”, 5, 4) | 2015 |
| Len | Độ dài (chuỗi) | Len (“Tháng 7 năm 2015”) | 8 |
| trongStr | InStr(start, string, substring) | InStr(1, “Tháng 7-2015”, “-“) | 4 |
| Tỉa | Cắt (chuỗi) | Cắt tỉa (“ Guru99 “) | Guru99 |
| Thay thế | Thay thế (chuỗi, tìm, thay thế) | Thay thế(“Tháng 7-2015”, “-“, “/”) | Tháng 2015 năm XNUMX |
| UCase | UCase(string) | UCase(“guru99”) | GURU99 |
Đoạn mã macro bên dưới kết hợp một số chức năng này để tái tạo lại nhãn ngày tháng từ các thành phần của nó.
Sub StringFunctionsDemo() Dim Source As String Dim MonthPart As String Dim YearPart As String Source = "July-2015" ' Take the first three characters MonthPart = Left(Source, 3) ' Take the last four characters YearPart = Right(Source, 4) MsgBox MonthPart & "-" & YearPart, vbOKOnly, "String Functions" End Sub
Khi chạy macro sẽ hiển thị tháng 7 năm 2015. Mỗi hàm trả về một giá trị mới và giữ nguyên chuỗi gốc, đó là lý do tại sao các kết quả có thể được kết hợp an toàn trong một biểu thức duy nhất.
Các hàm này đều hoạt động trên từng chuỗi một. Khi một giá trị duy nhất chứa toàn bộ một danh sách, hai hàm khác sẽ xử lý tốt hơn.
Cách tách và nối chuỗi trong VBA
Dữ liệu được dán vào Excel thường đến dưới dạng một chuỗi dài với dấu phân cách giữa mỗi mục, chẳng hạn như “Pepsi, Coke, Fanta, Juice”. Việc đọc dữ liệu đó bằng Mid và InStr rất chậm và dễ bị lỗi. VBA cung cấp một cặp hàm phù hợp cho chính công việc này.
chẻ Nhận vào một chuỗi ký tự được phân tách bằng dấu phẩy và trả về một mảng chỉ mục từ 0, với một phần tử tương ứng với một mục. Tham gia Hàm này thực hiện điều ngược lại, nhận một mảng và trả về một chuỗi duy nhất với dấu phân cách giữa các phần tử. Lưu ý rằng Join hoạt động trên một mảng, chứ không phải trên hai chuỗi riêng biệt.
Sub SplitAndJoinDemo() Dim Source As String Dim Items() As String Dim i As Long Source = "Pepsi,Coke,Fanta,Juice" ' Break the value into an array on every comma Items = Split(Source, ",") For i = LBound(Items) To UBound(Items) Sheet1.Cells(i + 1, 1).Value = Items(i) Next i ' Rebuild the list with a different separator MsgBox Join(Items, " | "), vbOKOnly, "Joined List" End Sub
Vòng lặp ghi mỗi loại đồ uống vào một hàng riêng trong bảng tính, và hộp thoại thông báo sẽ hiển thị Pepsi | Coke | Fanta | Juice. Ba điểm sau đây làm cho mẫu này đáng tin cậy trong mã sản phẩm:
- Kết quả dựa trên chỉ số 0: Hàm Split luôn trả về một mảng được đánh số từ 0, bất kể Option Base được thiết lập như thế nào, vì vậy hãy điều khiển vòng lặp bằng LBound và UBound thay vì một số cố định.
- Khai báo là String(): Gán kết quả vào một mảng chuỗi động. Việc khai báo kích thước cố định trước sẽ gây ra lỗi biên dịch.
- Đầu vào trống: Việc tách một chuỗi rỗng sẽ trả về một mảng không có phần tử nào, vì vậy hãy kiểm tra với UBound trước khi đọc Items(0).
Ngay cả khi chọn đúng hàm, mã xử lý chuỗi vẫn có thể gặp lỗi theo một số cách có thể dự đoán được.
Các lỗi chuỗi VBA thường gặp và cách khắc phục chúng
Hầu hết các lỗi liên quan đến chuỗi ký tự trong Excel VBA đều xuất phát từ một vài nguyên nhân ngắn gọn. Nhận biết được triệu chứng sẽ giúp tiết kiệm thời gian và công sức gỡ lỗi.
- Lỗi không khớp kiểu dữ liệu khi nối chuỗi: Dấu cộng được sử dụng giữa văn bản và số. Hãy thay thế nó bằng dấu và (&), dấu này sẽ tự động chuyển đổi số.
- InStr trả về 0: Không tìm thấy chuỗi con. Phương thức InStr trả về 0 thay vì -1 khi thất bại, vì vậy hãy kiểm tra giá trị lớn hơn 0 trước khi truyền kết quả cho phương thức Mid.
- Lỗi gọi thủ tục không hợp lệ trong Mid hoặc Left: Độ dài yêu cầu là số âm, hoặc vị trí bắt đầu nhỏ hơn 1. Hãy bảo vệ lời gọi hàm bằng Len để độ dài không bao giờ vượt quá chuỗi.
- Những so sánh đáng lẽ phải khớp nhưng lại không khớp: Khoảng trắng thừa từ dữ liệu nhập khẩu sẽ phá vỡ sự bằng nhau. Hãy bọc cả hai phía bằng hàm Trim, và sử dụng StrComp khi cần bỏ qua chữ hoa chữ thường.
- Văn bản sẽ không chuyển thành số: Giá trị như “1,200” sẽ không thực hiện được phép toán do dấu phân cách. Hãy loại bỏ dấu phân cách bằng hàm Replace trước khi chuyển đổi bằng CLng.
Tải xuống Excel chứa mã ở trên
Tải xuống tệp Excel ở trên Code


