Hàm tách chữ (hoặc số) trong VBA với tham số là Range hoặc String

Liên hệ QC

lehoctk

Thành viên chính thức
Tham gia
20/2/21
Bài viết
60
Được thích
1
Em chào cả nhà, em có tham khảo trên mạng (không nhớ chính xác nguồn) được hàm tách số (hoặc chữ) như bên dưới. tuy nhiên hàm chỉ hoạt động khi tham số là Range, nếu tham số là chuỗi kết quả trả về từ Function thì sẽ bị lỗi #Value! ạ. Mong mọi người chỉ giáo cách khắc phục để có thể truyền biến tuỳ ý là Range hoặc String ạ.
Em xin gửi code của func tách chuỗi:
PHP:
Public Function SplitText(pWorkRng As Range, pIsNumber As Boolean) As String
Dim xLen As Long
Dim xStr As String
xLen = VBA.Len(pWorkRng.Value)

For i = 1 To xLen
    xStr = VBA.Mid(pWorkRng.Value, i, 1)
    If ((VBA.IsNumeric(xStr) And pIsNumber) Or (Not (VBA.IsNumeric(xStr)) And Not (pIsNumber))) Then
        SplitText = SplitText + xStr
    End If
Next
End Function
Nếu em gõ công thức như sau tại ô bất kỳ thì bị lỗi #Value! ạ: =SplitText(SUBSTITUTE(ADDRESS(B5,C5),"$",""),1)
Em cảm ơn mọi người đã quan tâm ạ
 
Nếu em gõ công thức như sau tại ô bất kỳ thì bị lỗi #Value! ạ: =SplitText(SUBSTITUTE(ADDRESS(B5,C5),"$",""),1)
Em cảm ơn mọi người đã quan tâm ạ

Khai báo nó là "Range" thì phải đưa tham số là "Range" vào. Ví dụ trường hợp trên:

=SplitText(INDIRECT(SUBSTITUTE(ADDRESS(B5,C5),"$","")),1)

Hoặc gọn hơn:

=SplitText(INDIRECT(ADDRESS(B5,C5)),1)

.Hoặc:

=SplitText(INDIRECT("R"&B5&"C"&C5,0),1)

.
 
Upvote 0
Viết như bên dưới sẽ nhập được cả range và chuỗi, trong VBA không nên viết "VBA." vì nó là chuỗi khiến trình quét nhận dạng là mã nguy hại.

JavaScript:
Public Function SplitText(Text$, pIsNumber As Boolean) As String
Dim xLen As Long
Dim xStr As String
xLen = VBA.Len(Text)
For i = 1 To xLen
    xStr = Mid(Text, i, 1)
    If ((IsNumeric(xStr) And pIsNumber) Or (Not (IsNumeric(xStr)) And Not (pIsNumber))) Then
        SplitText = SplitText + xStr
    End If
Next
End Function
 
Upvote 0
Viết như bên dưới sẽ nhập được cả range và chuỗi, trong VBA không nên viết "VBA." vì nó là chuỗi khiến trình quét nhận dạng là mã nguy hại.

JavaScript:
Public Function SplitText(Text$, pIsNumber As Boolean) As String
Dim xLen As Long
Dim xStr As String
xLen = VBA.Len(Text)
For i = 1 To xLen
    xStr = Mid(Text, i, 1)
    If ((IsNumeric(xStr) And pIsNumber) Or (Not (IsNumeric(xStr)) And Not (pIsNumber))) Then
        SplitText = SplitText + xStr
    End If
Next
End Function
Em cảm ơn bác nhiều vì đã trợ giúp và chia sẻ kiến thức ạ.
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom