Bộ nhớ tăng dần đều lên?

Liên hệ QC

Phamnghi07

Thành viên mới
Tham gia
20/5/19
Bài viết
10
Được thích
1
Em dùng 10 Userform trên 1 file excel, em cũng dùng khoảng 20 biến toàn cục và có gải phóng biến khi kết thúc sub. Em thấy file excel chiếm bộ nhớ máy tính gấp 4 lần sau khi hoạt động khoảng 3 tiếng và gây lỗi chương trình, tắt đi mở lại file thì lại chạy tốt. Mong các anh chị dành cho em chút ít kinh nghiệm về việc này? Em chân thành cảm ơn!!!
************
Đây là các biến toàn cục em sử dụng và đã cho hết vào 1 Module:
Option Explicit
Public ws As Worksheet, ws2 As Worksheet, ws3 As Worksheet, ws4 As Worksheet
Public rng As Range, rng2 As Range, rng3 As Range
Public i As Integer, i2 As Integer, i3 As Integer
Public ar As Variant, ar2 As Variant, ar3 As Variant
Public lr As Long, lr2 As Long, lr3 As Long
Public Str As String, str2 As String, str3 As String
 
bói cái coi
Kiểu rờ voi xong bói quá -0-0-0-
 
Upvote 0
Biến i mà chạy theo lr thì chạy sao được.

Ở Sub chạy chính thì thêm End vào trước dòng End Sub (Không úp code nên chỉ định phương án mò vậy thôi).
Em cảm ơn anh góp ý! Em có nhiều Module nên xin gửi 1 Sub này mong anh nhận xét giùm:
Sub IN_RIENG()
Application.ScreenUpdating = False
Set ws = SBaoGia
Set ws2 = STinhTien
Set rng = ws.Range("Q36:Q42")
Set rng2 = ws.Range("Q44:S59")
With ws2
.Activate
.Unprotect Password:="anhnghi07"
.Range("P9").Formula = "=BAO_GIA!$Q44"
.Range("S9").Formula = "=BAO_GIA!$R44"
.Range("P9:R9").AutoFill Destination:=Range("P9:R24"), Type:=xlFillDefault
.Range("S9:S24").FillDown
If WorksheetFunction.CountA(rng) < 1 Then
MsgBox "Chua co thong tin cua phieu!", vbCritical
ElseIf WorksheetFunction.CountA(rng2) < 1 Then
MsgBox "Chua co hàng hóa!", vbCritical
ElseIf MsgBox("Xác nhân Tính Tiên?", vbYesNo, "THÔNG BÁO:") = vbYes Then

If .Range("M1").Value = 1 Then
Call IN_BILL_1
UFXinKhachNhanXet.Show vbModeless
Else
Call IN_BILL_2
End If
Unload U_Tong
.Range("J23").Formula = "=R26/1000" 'LÀM GON SÔ TIÊN LAI
.Range("M1").Formula = "=RANDBETWEEN(0,9)"
.Range("M1").Value = .Range("M1").Value ' Lây du liêu M1 dê xác dinh xin ý kiên khách
Call Nhap_Lieu_Nhat_Ky
Call mo_form_BoSungThongTinHD


With ws
.Unprotect Password:="anhnghi07"
.Range("Q36:Q42").ClearContents
.Range("Q44:S59").ClearContents
.Range("Q43:S43").Value = .Range("L29:N29").Value
.Protect Password:="anhnghi07"
End With
End If
.Protect Password:="anhnghi07"
End With
ActiveWorkbook.Save
ws.Activate
Set ws = Nothing
Set ws2 = Nothing
Set ws3 = Nothing
Set ws4 = Nothing
Set rng = Nothing
Set rng2 = Nothing
Application.ScreenUpdating = True
End Sub
Bài đã được tự động gộp:

Biến i mà chạy theo lr thì chạy sao được.
Biến i không chạy theo lr được là vì sao ạ? anh chỉ giùm em chút ạ? em cũng mới làm quen VBA thôi nên mong dành cho chút góp ý
Bài đã được tự động gộp:

Giải phóng bằng cách nào?
Trong đám có 3 cái Variants (chắc là mảng), và 3 cái chuỗi động.
em viết vội, đúng là không giải phóng biến này được ạ. Cảm ơn anh! Anh giúp em chút, xin góp ý Giùm em với! (Anh VietMimi là người rất giỏi và nhiệt tình trên diễn đàn này, trân trọng anh!)
Bài đã được tự động gộp:

bói cái coi
Kiểu rờ voi xong bói quá -0-0-0-
Xin lỗi vì không gửi file lên, em có một sub này hay sử dụng. Xin anh xem giùm và góp ý giúp em với ạ

Sub IN_RIENG()
Application.ScreenUpdating = False
Set ws = SBaoGia
Set ws2 = STinhTien
Set rng = ws.Range("Q36:Q42")
Set rng2 = ws.Range("Q44:S59")
With ws2
.Activate
.Unprotect Password:="anhnghi07"
.Range("P9").Formula = "=BAO_GIA!$Q44"
.Range("S9").Formula = "=BAO_GIA!$R44"
.Range("P9:R9").AutoFill Destination:=Range("P9:R24"), Type:=xlFillDefault
.Range("S9:S24").FillDown
If WorksheetFunction.CountA(rng) < 1 Then
MsgBox "Chua co thong tin cua phieu!", vbCritical
ElseIf WorksheetFunction.CountA(rng2) < 1 Then
MsgBox "Chua co hàng hóa!", vbCritical
ElseIf MsgBox("Xác nhân Tính Tiên?", vbYesNo, "THÔNG BÁO:") = vbYes Then

If .Range("M1").Value = 1 Then
Call IN_BILL_1
UFXinKhachNhanXet.Show vbModeless
Else
Call IN_BILL_2
End If
Unload U_Tong
.Range("J23").Formula = "=R26/1000" 'LÀM GON SÔ TIÊN LAI
.Range("M1").Formula = "=RANDBETWEEN(0,9)"
.Range("M1").Value = .Range("M1").Value ' Lây du liêu M1 dê xác dinh xin ý kiên khách
Call Nhap_Lieu_Nhat_Ky
Call mo_form_BoSungThongTinHD


With ws
.Unprotect Password:="anhnghi07"
.Range("Q36:Q42").ClearContents
.Range("Q44:S59").ClearContents
.Range("Q43:S43").Value = .Range("L29:N29").Value
.Protect Password:="anhnghi07"
End With
End If
.Protect Password:="anhnghi07"
End With
ActiveWorkbook.Save
ws.Activate
Set ws = Nothing
Set ws2 = Nothing
Set ws3 = Nothing
Set ws4 = Nothing
Set rng = Nothing
Set rng2 = Nothing
Application.ScreenUpdating = True
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom