Vì sao file vba đang chạy ngon lại báo lỗi?

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

GÀ VBA

Thành viên mới
Tham gia
24/2/23
Bài viết
6
Được thích
0
Chào các bro,
Em mới tập làm quen với VBA, sau khi học cách triết xuất dữ liệu tự động thành các sheet khác nhau của anh Gà excel, em đã tạo được 1 file cho mình dùng.
Nhưng vấn đề của em là:
1. Khi đang sử dụng như bình thường, nhập liệu chừng 100 account, thì nó báo lỗi run-time 1004 (trong cả quá trình em không edit/insert/delete dòng hay cột hay bất cứ cái gì trong file để bị ảnh hưởng macro chạy, chỉ nhập liệu đơn thuần thôi). Khi restart máy thì lại chạy bình thường, 1 lúc sau lại báo lỗi này, lại tắt máy rồi cứ lặp lại vậy.
2. Khi file báo lỗi thì có 2 trường hợp thường xảy ra: đó là nó đơ luôn, tắt cửa sổ vba hay file excel đều không được, e phải tắt máy.

Em muốn hỏi các anh/chị bro 2 vấn đề ạ:
1. Làm sao để giữ cho file luôn chạy ổn định, có điều gì cần lưu ý không ạ. Lỗi run-time trong trường hợp này là gì.
Trong quá trình nhập liệu có thể e vô tình vi phạm lỗi nào đó để macro k chạy nhưng em k biết, mong các anh/chị chỉ ra giúp e 1 số lỗi có thể xảy ra nhé.
2. Hàng ngày e phải cập nhật khá nhiều data, em lo lắng không biết có khả năng nào khi lỗi macro không chạy, file bị mất hết dữ liệu không ạ? hay nó chỉ k chạy thì ít ra e còn có data để advance filter trong excel thường.

Em cảm ơn nhiều ạ.
 
Lần chỉnh sửa cuối:
Không 1 file mẫu, chỉ mô tả như vậy thì rất khó. Ai mà biết thuật toán trong đó đang chạy là gì?
Nếu thuật toán chưa tốt, lấy quá nhiều dữ liệu mà không cần thiết, dẫn đến bộ nhớ bị chiếm dụng tăng lên sau mỗi lần lặp, thì tràn bộ nhớ là bình thường.
Không phải code lỗi mà code gây chiếm dụng bộ nhớ thì sao ?
Thầy bói xem voi thôi.
 
Upvote 0
Không 1 file mẫu, chỉ mô tả như vậy thì rất khó. Ai mà biết thuật toán trong đó đang chạy là gì?
Nếu thuật toán chưa tốt, lấy quá nhiều dữ liệu mà không cần thiết, dẫn đến bộ nhớ bị chiếm dụng tăng lên sau mỗi lần lặp, thì tràn bộ nhớ là bình thường.
Không phải code lỗi mà code gây chiếm dụng bộ nhớ thì sao ?
Thầy bói xem voi thôi.
Vâng, cảm ơn bạn nhiều đã hướng dẫn ạ.
File mẫu là chuẩn rồi vì tớ copy của anh Gà excel và dùng được tốt, có lỗi là trong quá trình tớ nhập liệu gây ra thôi chứ k phải do thuật toán.
Tớ muốn hỏi là khi file không chạy macro thì mọi dữ liệu mình đã nhập vào trong datasheet vẫn giữ nguyên và mình vẫn mở ra được bình thường phải k ạ?
Mình chỉ sợ nhất là 1 ngày đẹp trời bị mất hết dữ liệu thôi ạ, còn những lỗi khác thì thôi để vướng đâu hỏi đó sau :D
 
Upvote 0
Tớ muốn hỏi là khi file không chạy macro thì mọi dữ liệu mình đã nhập vào trong datasheet vẫn giữ nguyên và mình vẫn mở ra được bình thường phải k ạ?
Nếu không xem được code thì không thể kết luận gì hết. Biết đâu code có dòng lệnh đóng không lưu, hoặc chỉ lưu với điều kiện xyz gì đó, hoặc xui rủi có câu lệnh xóa gì đó, ...
Cởi chuông phải tìm người buộc chuông thôi. Nếu muốn người khác cởi hộ thì phải đưa cái dây buộc chuông ra.
 
Upvote 0
Mình chỉ sợ nhất là 1 ngày đẹp trời bị mất hết dữ liệu thôi ạ, còn những lỗi khác thì thôi để vướng đâu hỏi đó sau
Nếu không có file thì chắc chúng ta chỉ có thể ngồi nói chuyện phiếm với nhau thôi
 
Upvote 0
Lỗi file còn có thể ở 1 ngày thời tiết xấu nào đó đã làm phát triển 1 con virus độc hay lạ
Để kiểm chứng điều này, tác giả bài đăng nên gởi file đến VIRUSTOTAL.COM xem sao(!)
 
Upvote 0
Nếu không xem được code thì không thể kết luận gì hết. Biết đâu code có dòng lệnh đóng không lưu, hoặc chỉ lưu với điều kiện xyz gì đó, hoặc xui rủi có câu lệnh xóa gì đó, ...
Cởi chuông phải tìm người buộc chuông thôi. Nếu muốn người khác cởi hộ thì phải đưa cái dây buộc chuông ra.
Lỗi 1004 phần lớn do thao tác với đối tượng (objects).
Lỗi người hỏi là ỷ y, nghĩ là với con sô 1004 là đủ để chẩn mạch. Không chịu nhìn kỹ để thấy lúc báo lỗi, VBA cũng cho biết lỗi như thế nào và ở dòng lệnh nào. (trên 90% người hay viết tắt có tật như vậy)
Lỗi GPE là hay đoán giùm cho họ. Dạo này có thiếu gì bài mà chính người viết nói "đoán đại, không đúng thì bỏ".. Tôi không nói là chỉ đoán bệnh, mà cho toa, chích thuốc luôn.

Nếu bảo tôi rờ mu rùa thì với cái hiện tượng "đang chạy ngon [sic] thì báo lỗi" tôi sẽ đoán cú đầu là do code cố gáng mở một file đã mở sẵn, hoặc tạo một sheet mới mà tên đã có rồi..
Những điều diễn tả trong bài #1 không đúng hẳn với tiêu đề cho nên tôi bỏ qua.

Những điều tôi viết trên là viết chung cho GPE. Tôi từ chối không giao thiệp với người hay viết tắt cho nên thớt muốn hỏi tôi gì nữa thì viết cho rõ rệt.
 
Upvote 0
Lỗi 1004 phần lớn do thao tác với đối tượng (objects).
Tôi chỉ trả lời cho câu hỏi "mọi dữ liệu mình đã nhập vào trong datasheet vẫn giữ nguyên hay không".
Còn 1004 là gì thì tôi không quan tâm. Không có code, không có tình huống lỗi, không có thông báo lỗi, không có dòng lệnh lỗi tô vàng, ... thì không cho toa chích thuốc.
Thông báo lỗi của MS với cái Error Number cũng chỉ có ý nghĩa giống như khai bệnh mỗi 1 triệu chứng ho, trời biết vì sao mà ho.
 
Lần chỉnh sửa cuối:
Upvote 0
Không có cái gì mà ngon lại lăn đùng ra ngỏm cả. Chỉ có hàng lởm mới thế thôi.
Như kiểu gà ngon (loại gà bới cỏ ăn giun, ăn ngô khoai) nhưng kỹ thuật người mổ gà kém, lúc moi nội tạng bị vỡ mật. Luộc con gà tới lúc ăn miếng ngoài thì ngon, còn miếng trong thì đắng ngắt.
 
Upvote 0
Lần chỉnh sửa cuối:
Upvote 0
Không có cái gì mà ngon lại lăn đùng ra ngỏm cả. Chỉ có hàng lởm mới thế thôi.
Như kiểu gà ngon (loại gà bới cỏ ăn giun, ăn ngô khoai) nhưng kỹ thuật người mổ gà kém, lúc moi nội tạng bị vỡ mật. Luộc con gà tới lúc ăn miếng ngoài thì ngon, còn miếng trong thì đắng ngắt.
Có. Nói thẳng ra thì code ở đây cũng thiếu gì.
Hâu hết dân viết code ở đây chỉ biết viết code và chạy trên môi trường của cái file mà người hỏi đưa lên. Thỉnh thoảng mới có người nhận ra và nhắc "nếu ... thì tèo".
Vì vậy, trở lại rờ mu cá sấu mà nói thì chuyện "đang chay ngon tự dưng lăn đùng ra dẫy đành đạch" mà không xảy ra thì mới đáng ngạc nhiên.

Vả lại, từ "chạy ngon" chỉ là nói trên quan điểm người sử dụng code. Người ta thấy nó chỉ cần "bấm một phát", và thấy "kết quả" thì là ngon.
"ngon" đâu có nghĩa là đúng đắn và đáng tin cậy.

Quan điểm của người thích bê thui thì cứ cắt thấy thịt hồng đào, còn ươm nước đo đỏ là ngon rồi. Cái chuyện sán tính sau.
 
Upvote 0
Cảm ơn các anh chị đã giúp em hiểu được phần nào về VBA.
Cảm ơn befaint, VetMini, ptm0412, SA_DQ, BuiQuangThuan, huhumalu ạ.

Em gửi file các anh chị giúp em ạ:
- Nó bị 1 lỗi là khi gõ vào sheet Form nhập liệu thì nó chạy được khoảng 5 - 10 lần nhập rồi nó báo lỗi dòng bôi vàng em có đính kèm (remove record table 2. Nhưng mà trong cả file excel em chỉ có 1 cái table duy nhất là table 3, viết code cũng table 3). Sau khi em tắt file đi bật lại thì vẫn chạy bình thường, được khoảng 10 lần lại phải tắt đi bật lại :D

- Để tiện gửi cho các anh chị xem file em xóa hết dữ liệu data, và lấy ví dụ như trong bảng, thì lại có 1 vấn đề: đó là khi e nhập dữ liệu vào Form, nó không tự động cập nhật vào trong sheet dữ liệu, mà em phải tắt file đi, sau khi bật lại thì nó mới hiển thị sang sheet dữ liệu. Có phải em cho nó từ lợn lành thành lợn què rồi không ?!!
May quá file em đang dùng ít nhất vẫn nhập được 10 cái rồi mới phải tắt đi bật lại :D

Em cảm ơn các anh chị nhiều nhé.
 

File đính kèm

  • test vba 3Mar23.xlsm
    69.5 KB · Đọc: 6
  • error remind.png
    error remind.png
    177.3 KB · Đọc: 23
  • repair.png
    repair.png
    15 KB · Đọc: 22
Upvote 0
Tạo lắm sọt quá, bùng phình ra, vỡ bụng chứ sao.

Add 1 lần thôi, lần sau chỉ gọi lệnh sort (không add nữa).

1677834916845.png
 
Upvote 0
Tạo lắm sọt quá, bùng phình ra, vỡ bụng chứ sao.

Add 1 lần thôi, lần sau chỉ gọi lệnh sort (không add nữa).

View attachment 287112
Em cảm ơn anh, thảo nào thỉnh thoảng nó cứ báo lỗi out of memory.

Là do tạo nhiều sort quá ạ, vậy thôi em bớt 1 cái sort đi, dùng 2 cái thôi chắc cũng đỡ hơn nhiều phải k ạ.
Em cũng mún làm theo anh chỉ, add 1 lần, lần sau chỉ gọi lệnh sort, nhưng mà e đang trình độ gà nên không biết làm ntn, nên e cứ xóa 1 cái cho nhẹ đã :D

Ah em xin đính chính chút là trong file của e chạy 2 macro, của a Gà excel là tách sheet, cái này chạy tốt không có vấn đề, em k attach ở đây.
Cái macro thứ 2 là sắp xếp theo thứ tự một cách tự động thì em học vẹt từ người khác. Cái vụ nhiều sort này không phải là e học của a Gà Excel, e phải đính chính không nhỡ có ai hiểu nhầm a Gà làm chưa tốt ạ )(*^=
 
Upvote 0
Các super ơi, làm sao để bỏ lệnh sort đi ạ.
Em đã xóa bớt 1 lệnh sort rồi (thay vì sort 3 điều kiện thì giờ còn 2 điều kiện), nhưng mà có vẻ như nó vẫn chậm và cứ báo lỗi cái dòng vàng vàng.
Nó báo vậy nghĩa là sao ạ :((
 

File đính kèm

  • fix error.png
    fix error.png
    232.8 KB · Đọc: 21
Upvote 0
Thử đổi cách sort:
PHP:
With wbMaster.Sheets("DS")
    .AutoFilterMode = False
    .Sort.SortFields.Clear
    LastRw = .[A10000].End(xlUp).Row
    .Range("A1:K" & LastRw).Sort _
    key1:=.[A1], Order1:=xlAscending, _
    key2:=.[G1], Order2:=xlAscending, _
    key3:=.[H1], Order3:=xlAscending, Header:=xlYes
End With
 
Upvote 0
cứ báo lỗi cái dòng vàng vàng

Chức năng sort lưu thiết lập, chỉ cần tạo một lần đầu duy nhất. Lần sau gọi lên là được.

Viết rõ thế mà không hiểu à mình?

Xóa hết mấy cái dòng có chữ .Add đó đi.

Mà không biết có tìm ra cái hình ở bài #13 mà dọn dẹp đi chửa?

Còn chưa rành công cụ có sẵn của Excel, vba làm gì cho rắc rối.

1678154186251.png
 
Upvote 0
Xóa hết mấy cái dòng có chữ .Add đó đi.
Vụ này tôi bị 1 lần rồi. Add 2 lần thì không sao, 3 lần trở lên thì đưa qua máy khác bị lỗi dòng Add thứ 3. Viết kiểu key1 thì 4, 5 key(s) đều không sao. Ấy là data mới tạo ra cần phải sort á.
 
Upvote 0
Vụ này tôi bị 1 lần rồi. Add 2 lần thì không sao, 3 lần trở lên thì đưa qua máy khác bị lỗi dòng Add thứ 3. Viết kiểu key1 thì 4, 5 key(s) đều không sao. Ấy là data mới tạo ra cần phải sort á.

Anh gửi file đó em chỉnh cho.

---
SortFields.Count <= 64. Lớn hơn 64 thì không thể .Add thêm được nữa.

Thớt chép làm theo vi đeo của một con gà nào đó (theo lời thớt viết - "a Gà excel") mà không biết là bảng dữ liệu Table3 không có trường nào có tên là "AREA, FUNCTION, BUDGET". Chắc vi đeo không hướng dẫn kỹ, hoặc thớt xem không kỹ.


1678156785753.png

1678156910119.png
 
Upvote 0
Web KT

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

Back
Top Bottom