- Tham gia
- 17/8/08
- Bài viết
- 8,662
- Được thích
- 16,722
- Giới tính
- Nam
Nếu như Excel 2003, ta muốn đếm 1 sheet có bao nhiêu cells, ta mở VBE, Ctrl+G để mở Immediate làm như sau:
?cells.Count
Kết quả: 16,777,216 cells.
Hoặc ta chọn khối toàn bộ sheet và gõ:
?Selection.Count
Kết quả: 16,777,216 cells.
Nhưng với Excel 2007 trở về sau, ta không thể thực hiện được như vậy, bởi nó bị lỗi Runtime Error '6' (Overflow)
=> Anh Bill khi đã tăng lượng cột và lượng hàng trong quá trình tính toán cửa số VBA nó không tính được con số quá lớn:
Với thủ tục trên nó sẽ bị lỗi Overflow.
Trong khi tính toán trong sheet, kết quả: 17,179,869,184 cells.
Như thế, một kinh nghiệm ở đây là nếu chúng ta dùng sự kiện Worksheet_SelectionChange mà chúng ta bẫy lỗi bằng cách:
If Selection.Count > 1 then
Hoặc:
If Target.Count > 1 Then
Thì với việc chọn khối toàn bộ sheet của Excel 2007 trở về sau sẽ phát sinh ra lỗi số 6.
Cho nên, để không mắc lỗi này, chúng ta nên bẫy lỗi thay cho 2 dòng lệnh đó như sau:
If Target.Rows.Count > 1 Or Target.Columns.Count > 1 Then
Làm như thế nó sẽ không phát sinh ra lỗi khi ta chọn toàn bộ sheet nữa, đảm bảo được sự kiện Selection đúng địa chỉ.
?cells.Count
Kết quả: 16,777,216 cells.
Hoặc ta chọn khối toàn bộ sheet và gõ:
?Selection.Count
Kết quả: 16,777,216 cells.
Nhưng với Excel 2007 trở về sau, ta không thể thực hiện được như vậy, bởi nó bị lỗi Runtime Error '6' (Overflow)
=> Anh Bill khi đã tăng lượng cột và lượng hàng trong quá trình tính toán cửa số VBA nó không tính được con số quá lớn:
Mã:
Sub test()
Dim d As Double
'Số hàng * Số cột:
d = 1048576 * 16384
MsgBox d
End Sub
Với thủ tục trên nó sẽ bị lỗi Overflow.
Trong khi tính toán trong sheet, kết quả: 17,179,869,184 cells.
Như thế, một kinh nghiệm ở đây là nếu chúng ta dùng sự kiện Worksheet_SelectionChange mà chúng ta bẫy lỗi bằng cách:
If Selection.Count > 1 then
Hoặc:
If Target.Count > 1 Then
Thì với việc chọn khối toàn bộ sheet của Excel 2007 trở về sau sẽ phát sinh ra lỗi số 6.
Cho nên, để không mắc lỗi này, chúng ta nên bẫy lỗi thay cho 2 dòng lệnh đó như sau:
If Target.Rows.Count > 1 Or Target.Columns.Count > 1 Then
Làm như thế nó sẽ không phát sinh ra lỗi khi ta chọn toàn bộ sheet nữa, đảm bảo được sự kiện Selection đúng địa chỉ.