Nhờ gỡ rối dòng lệnh đơn giản trong VBA

Liên hệ QC

thaitungchi

Thành viên chính thức
Tham gia
20/1/17
Bài viết
55
Được thích
19
Nhờ mọi người gỡ rối giúp dòng lệnh tưởng chừng đơn giản nhưng mà không hiểu sao không chạy được.

Sheets("Order_Plan").Range("B9").Fomula = "=IFERROR(INDEX(Order_List!$F$286:$F$385,MATCH(Order_Plan!C9,Project_Name,0)),"""")"
Sheets("Order_Plan").Range("A9").Fomula = "=IF(B9="""",""ZZ"",IF(B9=0,""ZZ"",INDEX(Order_List!$H$286:$H$291,MATCH(B9,Order_List!$G$286:$G$291,0))))"
Sheets("Order_Plan").Range("E9").Fomula = "=IFERROR(D9/D$8,""----"")"

Khi nhập công thức trực tiếp trên bảng tính thì công thức chạy tốt, nhưng khi sử dụng VBA thì báo lỗi "Run-time error '438': Object does not support this property or method". Tất nhiên các sheet "Order_Plan" và "Order_List" và tên "Project_Name" đã được tạo. Khi thử xóa dòng trên đi thì dòng tiếp theo vẫn bị báo lỗi tương tự. Và những dòng lệnh tiếp theo để nhập công thức vào bằng VBA đều bị báo lỗi.

Hiện nay mình đang sử dụng win10, excel2007
 
Nhờ mọi người gỡ rối giúp dòng lệnh tưởng chừng đơn giản nhưng mà không hiểu sao không chạy được.

Sheets("Order_Plan").Range("B9").Fomula = "=IFERROR(INDEX(Order_List!$F$286:$F$385,MATCH(Order_Plan!C9,Project_Name,0)),"""")"
Sheets("Order_Plan").Range("A9").Fomula = "=IF(B9="""",""ZZ"",IF(B9=0,""ZZ"",INDEX(Order_List!$H$286:$H$291,MATCH(B9,Order_List!$G$286:$G$291,0))))"
Sheets("Order_Plan").Range("E9").Fomula = "=IFERROR(D9/D$8,""----"")"

Khi nhập công thức trực tiếp trên bảng tính thì công thức chạy tốt, nhưng khi sử dụng VBA thì báo lỗi "Run-time error '438': Object does not support this property or method". Tất nhiên các sheet "Order_Plan" và "Order_List" và tên "Project_Name" đã được tạo. Khi thử xóa dòng trên đi thì dòng tiếp theo vẫn bị báo lỗi tương tự. Và những dòng lệnh tiếp theo để nhập công thức vào bằng VBA đều bị báo lỗi.

Hiện nay mình đang sử dụng win10, excel2007
Module chứa code trên là của sheet nào hay là Module chung? Sheet nào là sheet chứa công thức mà bạn muốn gán: Order_Plan hay Order_List?
 
Upvote 0
Module chứa code trên là model chung. Sheet chứa công thức mà muốn gán là Order_Plan
Bạn thử xem tiếp: Bỏ Sheets("Order_Plan"). đi xem còn lỗi không?

Lý do: Có thể Excel 2007 không cho gán công thức vào nếu Order_Plan không phải là sheet hiện hành
 
Upvote 0
Lần sau nên gõ chữ thường trong code, nếu enter mà chữ sau dấu chấm không thành chữ hoa tức là lỗi gõ sai
 
Upvote 0
Tui quánh:
set dic=createobject("scripting.dictionary")
Enter thì nó ra
Set Dic = CreateObject("scripting.dictionary")
Híc
Thân
Em không hiểu ý bác. Nhưng nếu bác nói chỗ viết trong nháy "scripting...." của dic với fso thì trình độ người học tới đây chắc không dễ gì sai chỗ đó
 
Upvote 0
Lần sau nên gõ chữ thường trong code, nếu enter mà chữ sau dấu chấm không thành chữ hoa tức là lỗi gõ sai
Theo trải nghiệm của tôi với Office 2010 trở về trước thì kể cả gõ thuộc tính không tồn tại thì VBA cũng tự chuyển đổi ký tự đầu thành chữ cái lớn. Còn nếu gõ một thuộc tính hay một phương thức có tồn tại thì VBA sẽ chuyển về đúng theo cách đặt tên của thuộc tính hay phương thức đó chứ không hẳn là theo quy ước bạn nêu.
Chẳng hạn class có thuộc tính tên BBack thì nếu dùng thuộc tính này VBA sẽ chuyển thành BBack chứ không phải Bback theo quy ước bạn suy ra, hoặc bBack mà gõ bback thì VBA cũng sẽ chuyển về bBack chứ không phải Bback.
 
Upvote 0
Những mẹo miếc này nọ chỉ giành cho dân đã quen code rồi. Với dân mới vào, gõ xong xuống hàng không thấy nó bôi đỏ là mừng húm. Chạy thấy lỗi là tá hoả tam tinh lên, mất hết bình tĩnh. Đem đi hỏi mà vừa hỏi vừa khóc hu hu nữa.

Nói trắng ra, đem bài đi hỏi mà còn không đọc lại xem mình đã trình bày dễ hiểu chưa thì bảo đọc code tìm lỗi là điều không tưởng.
 
Upvote 0
Web KT

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

Back
Top Bottom