Mọi người giúp đỡ code này với ạ sao đừng để lỗi

hoanhnnc

Thành viên mới
Tham gia ngày
13 Tháng ba 2008
Bài viết
42
Được thích
0
Điểm
663
Function gc(cmt As Range) As Double
Dim vDat As Variant
Dim i As Long
Dim res As Double
vDat = Split(CleanString(cmt.Comment.Text), vbCrLf)
For i = LBound(vDat) To UBound(vDat)
If Len(vDat(i)) > 0 Then
res = res + CDbl(vDat(i))
End If
Next i
gc = res
End Function
 

File đính kèm

HieuCD

Chuyên gia GPE
Tham gia ngày
14 Tháng chín 2010
Bài viết
6,518
Được thích
12,226
Điểm
1,560
Function gc(cmt As Range) As Double
Dim vDat As Variant
Dim i As Long
Dim res As Double
vDat = Split(CleanString(cmt.Comment.Text), vbCrLf)
For i = LBound(vDat) To UBound(vDat)
If Len(vDat(i)) > 0 Then
res = res + CDbl(vDat(i))
End If
Next i
gc = res
End Function
Thêm
On Error Resume Next
Sau dòng Dim
 

Nhất Chi Lan

Thành viên mới
Tham gia ngày
3 Tháng mười hai 2018
Bài viết
151
Được thích
190
Điểm
180
Tuổi
24
Function gc(cmt As Range) As Double
Dim vDat As Variant
Dim i As Long
Dim res As Double
vDat = Split(CleanString(cmt.Comment.Text), vbCrLf)
For i = LBound(vDat) To UBound(vDat)
If Len(vDat(i)) > 0 Then
res = res + CDbl(vDat(i))
End If
Next i
gc = res
End Function
Code trên không có điều kiện loại những ô không có Comment
Bạn thử như thế này xem
Mã:
Function CleanString(strIn As String) As String
    Dim objRegex
Set objRegex = CreateObject("vbscript.regexp")
With objRegex
    .Global = True
    .Pattern = "[^0-9" & Application.DecimalSeparator & "]"
    CleanString = .Replace(strIn, vbCrLf)
End With
End Function
Function gc(cmt As Range) As Double
    Dim vDat As Variant, cll As Range
    Dim i As Long, res As Double
    For Each cll In cmt
        If Not cll.Comment Is Nothing Then
            vDat = Split(CleanString(cll.Comment.Text), vbCrLf)
            For i = LBound(vDat) To UBound(vDat)
                If Len(vDat(i)) > 0 Then
                    res = res + CDbl(vDat(i))
                End If
            Next i
        End If
    Next
    If res Then gc = res
End Function
 

hoanhnnc

Thành viên mới
Tham gia ngày
13 Tháng ba 2008
Bài viết
42
Được thích
0
Điểm
663
Code trên không có điều kiện loại những ô không có Comment
Bạn thử như thế này xem
Mã:
Function CleanString(strIn As String) As String
    Dim objRegex
Set objRegex = CreateObject("vbscript.regexp")
With objRegex
    .Global = True
    .Pattern = "[^0-9" & Application.DecimalSeparator & "]"
    CleanString = .Replace(strIn, vbCrLf)
End With
End Function
Function gc(cmt As Range) As Double
    Dim vDat As Variant, cll As Range
    Dim i As Long, res As Double
    For Each cll In cmt
        If Not cll.Comment Is Nothing Then
            vDat = Split(CleanString(cll.Comment.Text), vbCrLf)
            For i = LBound(vDat) To UBound(vDat)
                If Len(vDat(i)) > 0 Then
                    res = res + CDbl(vDat(i))
                End If
            Next i
        End If
    Next
    If res Then gc = res
End Function
Dạ Cảm ơn Anh chị, em nhiều.
 
Top Bottom