Nhờ giúp đỡ : Lỗi Run time Error 7 Out Of Memory

Liên hệ QC

lưu tuấn dũng

Thành viên chính thức
Tham gia
27/6/17
Bài viết
62
Được thích
2
Giới tính
Nam
Xin chào các bác , mình có tham khảo được đoạn Code chuyển đổi công thức File Excel sang dạng số . Nhưng File chạy được , File báo lỗi Run time Error 7 Out Of Memory
Đoạn Code như sau :
Sub Test()
Dim Ws As Worksheet
For Each Ws In ThisWorkbook.Worksheets
Ws.UsedRange.Value = Ws.UsedRange.Value
Next
End Sub
Mong các bác tư vấn giúp đỡ !
Em cảm ơn
 
Xin chào các bác , mình có tham khảo được đoạn Code chuyển đổi công thức File Excel sang dạng số . Nhưng File chạy được , File báo lỗi Run time Error 7 Out Of Memory
Đoạn Code như sau :
Sub Test()
Dim Ws As Worksheet
For Each Ws In ThisWorkbook.Worksheets
Ws.UsedRange.Value = Ws.UsedRange.Value
Next
End Sub
Mong các bác tư vấn giúp đỡ !
Em cảm ơn
Mình hiểu nôm na là nó "tràn bộ nhớ", với mình thì phải có file mình mới làm được.
Bạn thử gửi file lên xem nhé!
 
Upvote 0
Anh có thể giải thích cái thêm số 2 để hiểu thêm được không ạ
Nó điều chỉnh từ định dạng không phải số về dạng số.Ví dụ bạn lấy giá trị trong excel vào mảng.Mà trong đó có ngày tháng bạn lấy value2 thì những chỗ,ngày tháng đó nó thành số hết.
 
Upvote 0
Anh có thể giải thích cái thêm số 2 để hiểu thêm được không ạ
Excel chứa dữ liệu bảng tính bằng hai tầng.
Tầng thứ nhất chứa số liệu thô.
Tầng kế chứa chi tiết dạng dữ liệu.
Value2 lấy dữ liệu ở tầng thứ nhất. Value lấy dữ liệu cả hai tầng.
Ví dụ ô A5 chứa dữ liệu ngày 3/11/2022 8:00:00 AM.
Value2 cho biết A5 chứa một số thực với trị 44868.33, VBA chỉ biết nó là một số thực.
Value cho biết A5 là một dữ liệu ngày, trị thô là 44868.33, nhưng VBA biết nó là Date.

Value2 được người ta cho rằng nhanh hơn Value khoảng 50%.
Tuy nhiên khi sử dụng Value2 để đọc vào mảng và ghi trở lại range, bạn phải tự biết lấy chỗ nào thực sự là kiểu Date.

Cái này bạn nên tự viết một sub nhỏ rồi tự nắn nót sửa đổi, bảo debug nó in ra mọi kiểu cách cho bạn xem.
 
Lần chỉnh sửa cuối:
Upvote 0
cài Windows 64 bit + Office 64 bit + trên 16 GB RAM = khỏi suy nghĩ

Out Of Memory​

 
Upvote 0
UsedRange nó cũng có nhược điểm của nó. Nếu không thì việc xác định dòng cuối người ta mặc định sử dụng UsedRange cho nhanh rồi
Ws.UsedRange.Value = Ws.UsedRange.Value
Thay thế dòng trên bằng:
Mã:
On Error Resume Next
Ws.Cells.SpecialCells(xlCellTypeFormulas).Value = Ws.Cells.SpecialCells(xlCellTypeFormulas).Value
On Error GoTo 0
 
Upvote 1
PHP:
Sub Test()
Dim Ws As Worksheet
For Each Ws In ThisWorkbook.Worksheets
    For Each cell In Ws.UsedRange
        If cell.HasFormula Then
            cell.Value = cell.Value2
        End If
    Next
Next
End Sub
Tham gia xíu cho vui, nhưng chắc là chậm chứ không nhanh hơn :D
 
Upvote 0
Em cảm ơn tất cả mọi người đã hỗ trợ nhiệt tình em ạ . Chúc các bác sức khỏe và may mắn !
 
Upvote 0
Mình hiểu nôm na là nó "tràn bộ nhớ", với mình thì phải có file mình mới làm được.
Bạn thử gửi file lên xem nhé!
mong các bác hỗ trợ
Bài đã được tự động gộp:

Em thử các cách các bác nói mà không có được , File thì nặng quá upload không nổi ạ
 
Upvote 0
PHP:
Sub t()
    Dim ws As Worksheet
    For Each ws In ThisWorkbook.Worksheets
        ws.UsedRange.Copy
        ws.UsedRange.PasteSpecial xlPasteValues
        Application.CutCopyMode = False
    Next
End Sub
 
Upvote 0
Web KT

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

Back
Top Bottom