Hàm VBA xử lý chuổi trong Excel (1)

  • Thread starter lehongduc
  • Ngày gửi
L

lehongduc

Thành viên thân thiết
29/3/05
129
1
18
58
VietNam
#1
Xin chào các Bạn,
Xin tham gia với các bạn về VBA với hàm tự tạo thứ nhất nhé. Sau đây là mã nguồn. Để nạp mã nguồn này vào Excel, các Bạn làm như sau:
1. Mở Excel với 1 WorkBook trắng
2. Từ menu Tools chọn Macros làm hiện menu thứ cấp, chọn tiếp Visual Basic Editor (VBE)
3. Trong VBE, chọn menu Insert \ Module
4. Paste đọan mã sau vào đó.
5. Lưu lại
6. Sử dụng:
+ Nếu Bạn muốn tạo ra 1 Add-In có cái hàm này và sẽ còn những hàm khác nữa tùy bạn, từ menu File của Excel chọn Save As, trong hộp thọai Save As chọn "Save As Type" là "Microsoft Excel Add-In". Vậy là đã có Add-In (có tên là .XLA) sẵn sàng nạp để sử dụng rồi.
+ Nạp Add-In: từ menu Tools chọn Add-Ins, trong hộp thọai Add-Ins bấm nút Browse và chỉ vào file XLA vừa tạo ở trên.
+ kể từ đó trở đi, các hàm do bạn tạo ra trong Add-In này được gọi sử dụng giống như các hàm mặc định của Excel.

Và đây là mã nguồn của hàm tự tạo thứ nhất:
'========================================
Function CutLoR2(St As String, Char As String, N As Boolean)
'
'Cat lay chuoi con tu ben trai hay ben phai chuoi me den ky tu xac dinh
'Char: ky tu xac dinh
'n=true => cat ben trai, n=false => cat ben phai
'
Dim Sb As String, stChk As String
Dim i As Integer
If Len(St) = 0 Then Exit Function
St = Trim(St)
For i = 0 To Len(St)
If N = True Then 'Cat trai
stChk = Mid(St, i + 1, 1)

Else
stChk = Mid(St, Len(St) - i, 1)

End If

If stChk <> Char Then
If N = True Then
Sb = Sb & stChk
Else
Sb = stChk & Sb
End If
Else
Exit For
End If
Next i

CutLoR2 = Sb

End Function
'====================================================
 
S

SA_DQ

Thành viên thân thiết
29/6/05
433
38
28
61
HCM city
#2
Theo mình nghĩ: Chỉ nên xài 1/2 của bạn thôi!

:dzo:
Thêm sau 13h00
Function HoTen(Ho_Ten As String, Optional HoDem As Boolean) As String
' Hàm Này Lọc cả HoTen Người có Quốcc Tịch Việt Nam, nhưng phải dùng Unicode
Dim jz As Integer
Dim Tam As String, Luu As String
Luu = Ho_Ten: Ho_Ten = " " & Ho_Ten
For jz = 0 To 19
4 Tam = Right(Ho_Ten, 1): Ho_Ten = Left(Ho_Ten, Len(Ho_Ten) - 1)
If Tam = " " Then
6 Exit For
Else
8 HoTen = Tam & HoTen
End If
Next jz
9 If HoDem Then HoTen = Left(Luu, Len(Luu) - Len(HoTen))
End Function

:drummer:
 
Sửa lần cuối:
L

lehongduc

Thành viên thân thiết
29/3/05
129
1
18
58
VietNam
#3
Xin mời các bạn cùng tham gia "nghiên kíu"

SA_DQ nói:
Hàm của bạn thật hoàn chỉnh; Nhưng theo mình chỉ xài để cắt tên trong họ & tên thôi;
Vì để cắt lấy chuỗi họ ta xài 2 hàm sẵn có của excel thì hay hơn: =LEFT(A3,FIND(" ",A3)-1) ; Nếu bạn đồng í như vậy thì nên sửa hàm của bạn lại 1 chút để chỉ cắt tên trong chuỗi mẹ 'Họ và Tên'; Và viết thêm phần để cắt cả phần Họ & đệm, bạn thấy thế nào?!:dzo: :drummer:
Rất hoan nghênh,
Sẽ là dịp để chúng ta cùng nghiên cứu và hiểu rõ hơn cái lợi của VBA với Excel.
 

Thành viên trực tuyến

  • Ngọc Ánh Đỗ

Xem nhiều