- Tham gia
- 8/6/06
- Bài viết
- 14,565
- Được thích
- 22,872
- Nghề nghiệp
- U80
Tôi tạo một Sub như sau & nó làm việc hoàn hảo:
( Có nghĩa là tại ô kích hoạt sẽ cho giá trị tổng của các ô có công thức
Còn hàm sau thì không vậy:
Sai của hàm ở chỗ nó cộng thêm giá trị tại ~ ô không chứa công thức, mà chỉ là giá trị của vùng chọn!
Mã:
[b]Sub FormulasCells()[/b]
Dim NumCells As Range, ForCells As Range, AuCells As Range, Rng As Range
Dim Temp As Variant
Set AuCells = ActiveSheet.UsedRange
Set NumCells = AuCells.SpecialCells(xlCellTypeConstants, xlNumbers)
Set ForCells = AuCells.SpecialCells(xlCellTypeFormulas, xlNumbers)
For Each Rng In ForCells
Temp = Temp + Rng.Value
Next Rng
Selection.Value = Temp
Exit Sub: [b] End Sub [/b]
Còn hàm sau thì không vậy:
Mã:
[b]
Function SumOfFCells(AuCells As Range) As Variant[/b]
On Error GoTo LoiChwTrinh
Dim NumCells As Range, ForCells As Range, Rng As Range
Dim Temp As Variant
Set NumCells = AuCells.SpecialCells(xlCellTypeConstants, xlNumbers)
Set ForCells = AuCells.SpecialCells(xlCellTypeFormulas, xlNumbers)
For Each Rng In ForCells
Temp = Temp + Rng.Value
Next Rng
SumOfFCells = Temp
Err_ChwTrinh: Exit Function
LoiChwTrinh:
Select Case Err
Case 13
MsgBox "13" ': Resume Next
Case Else
SumOfFCells = Error & Str(Err): Resume Err_ChwTrinh
End Select
[b]End Function [/b]
Ví dụ: Tại một Sheet mới tôi nhập vô A1 giá trị 1
Tại A2 lập CT (công thức) =A1 + 2 ; Tại A3 nhập CT =A2 + A1;
Tại A5 nhập = 3 + 4; Tại B4 nhập hàm =SumOfFCells(A1:A9) - Sẽ có kết quả là 15 ;
Chọn ô B6 & nhấn tổ hợp fím chạy macro thì hiện tại đó kết quả 29 ;
Mình cho rằng 15 = 1 + 3 + 4 + 7
Và 29 = 3 + 4 + 7 + 15 ;
Vậy là hàm tự tạo cộng vô thêm giá trị tại A1 (không phải là ô chứa CT)
Lần chỉnh sửa cuối: