Lỗi khi chạy VBA

Liên hệ QC

destinythanhphuong

Thành viên hoạt động
Tham gia
15/10/11
Bài viết
125
Được thích
2
Chào các anh chị diễn đàn
Khi thực hiện macro trên sheet A , nếu chuyển sang sheet B thực hiện macro khác thì báo lỗi
Em gặp lỗi trong quá trình chạy chạy VBA như sau
Mình đính kèm file wip luôn , lỗi khi chạy tới dòng sau

'source
Sheets("SOURCE").Select
Range("D2:I2").Select
Selection.Copy
Range("D3").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Calculate
Range("C2").Select

1534907384417.png

Private Sub CommandButton1_Click()

Application.Goto Reference:="Table3"
Selection.SpecialCells(xlCellTypeConstants, 23).Select
Selection.ClearContents
Range("A4").Select

Dim DiaChi As String
DiaChi = ThisWorkbook.Path & "\"
With Workbooks.Open(DiaChi & "wip cong doan.xlsx") 'file du lieu
Sheets("Sheet1").Range("A1").Value = "=Counta(B2:B20000)" 'vung du lieu co bao nhieu dong
Calculate
.Close 1
End With
Range("A4").Value = "='" & DiaChi & "[wip cong doan.xlsx]Sheet1'!c2" ' a3 file tong hop la o dau tien load data, B2 la o chua data
Range("B1").Value = "='" & DiaChi & "[wip cong doan.xlsx]Sheet1'!A1" 'a1 cua tong hop = b1 cua data
Range("a4").Select
Selection.Copy
Range("A4").Resize(Range("B1").Value, 6).Select ' so 3 la so cot can lay
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Calculate

Range("A4").Resize(Range("C1").Value, 6).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("B1").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Calculate


'sort
ActiveSheet.ListObjects("Table3").Resize Range("$A$3:$F$30000")
Range("Table3[[#Headers],[Mã Hàng]]").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
ActiveSheet.Range("Table3[#All]").RemoveDuplicates Columns:=Array(1, 2, 3, 4, 5, 6 _
), Header:=xlYes

Calculate

'source
Sheets("SOURCE").Select
Range("D2:I2").Select
Selection.Copy
Range("D3").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Calculate
Range("C2").Select

End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Chào các anh chị diễn đàn
Khi thực hiện macro trên sheet A , nếu chuyển sang sheet B thực hiện macro khác thì báo lỗi
Em gặp lỗi trong quá trình chạy chạy VBA như sau
View attachment 202305
Vấn đề có thể nằm ở lệnh Application.Goto Reference:="Table3" ở đầu sub, và lỗi phát sinh khi sheet chứa Table3 chưa được chọn trước đó.
Bạn thử thêm câu lệnh Sheets("Sheet A").Activate (với "Sheet A" là tên sheet chứa đối tượng Table3) vào trước câu lệnh này thử xem.
Ngoài ra, code này có vẻ như bạn thu được từ công cụ Record macro, nếu bạn đưa file lên thì có thể có cách rút gọn code khá nhiều đấy. Chẳng hạn như thay vì 2 câu lệnh Range("A1:B10").Select : Selection.ClearContents thì có thể rút lại thành 1 câu Range("A1:B10").ClearContents,...
 
Upvote 0
Vấn đề có thể nằm ở lệnh Application.Goto Reference:="Table3" ở đầu sub, và lỗi phát sinh khi sheet chứa Table3 chưa được chọn trước đó.
Bạn thử thêm câu lệnh Sheets("Sheet A").Activate (với "Sheet A" là tên sheet chứa đối tượng Table3) vào trước câu lệnh này thử xem.
Không biết máy ai sao chứ máy tôi chọn Table3 vô tư, dù đang đứng ở bất kỳ sheet nào
Tôi nghĩ lỗi ở dòng này:
Mã:
ActiveSheet.ListObjects("Table3").Resize Range("$A$3:$F$30000")
Chẳng hiểu cú pháp này là sao nữa
???!!!
 
Upvote 0
Vấn đề có thể nằm ở lệnh Application.Goto Reference:="Table3" ở đầu sub, và lỗi phát sinh khi sheet chứa Table3 chưa được chọn trước đó.
Bạn thử thêm câu lệnh Sheets("Sheet A").Activate (với "Sheet A" là tên sheet chứa đối tượng Table3) vào trước câu lệnh này thử xem.
Ngoài ra, code này có vẻ như bạn thu được từ công cụ Record macro, nếu bạn đưa file lên thì có thể có cách rút gọn code khá nhiều đấy. Chẳng hạn như thay vì 2 câu lệnh Range("A1:B10").Select : Selection.ClearContents thì có thể rút lại thành 1 câu Range("A1:B10").ClearContents,...
Cảm ơn bạn, mình có đính kèm file, báo lỗi khi thực hiện lệnh macro từ sheet source
 

File đính kèm

Upvote 0
Không biết máy ai sao chứ máy tôi chọn Table3 vô tư, dù đang đứng ở bất kỳ sheet nào
Tôi nghĩ lỗi ở dòng này:
Mã:
ActiveSheet.ListObjects("Table3").Resize Range("$A$3:$F$30000")
Chẳng hiểu cú pháp này là sao nữa
???!!!
Câu lệnh đó lại không bị lỗi anh ạ, nó resize lại cái Table3 kia theo địa chỉ mới ($A$3:$F$30000). Em đã thử xóa bớt hàng để cho Table3 chỉ có vài hàng, khi chạy lệnh này thì Table3 được đặt lại địa chỉ để mở rộng tới hàng 30000.
Khi chạy trên file của tác giả thì lỗi phát sinh từ câu lệnh
Mã:
With Workbooks.Open(DiaChi & "wip cong doan.xlsx")
Nguyên nhân là không tìm thấy file "wip cong doan.xlsx" ở đâu cả.
Như vậy, điều đầu tiên là tác giả phải đưa cái file có tên là "wip cong doan.xlsx" đến cùng thư mục với file chứa code rồi chạy lại code xem có còn lỗi không đã rồi tính tiếp.
 
Upvote 0
...
Nguyên nhân là không tìm thấy file "wip cong doan.xlsx" ở đâu cả.
Như vậy, điều đầu tiên là tác giả phải đưa cái file có tên là "wip cong doan.xlsx" đến cùng thư mục với file chứa code rồi chạy lại code xem có còn lỗi không đã rồi tính tiếp.
WIP mờ. :):):)

Chú cho các bạn xa lạ với ngành sản xuất:
WIP = Work In Progress/Process = Bán Thành Phẩm
 
Upvote 0
WIP mờ. :):):)

Chú cho các bạn xa lạ với ngành sản xuất:
WIP = Work In Progress/Process = Bán Thành Phẩm
Thuật ngữ này lạ hoắc với em, nhưng chắc chắn là anh chàng VBA thì chẳng quan tâm đến chuyện WIP là đứa nào, chỉ cần điểm danh mà không thấy mặt là nó la làng lên liền à :D
 
Upvote 0
Cảm ơn bạn, mình có đính kèm file, báo lỗi khi thực hiện lệnh macro từ sheet source
Tui nói thật là bạn nói rõ mục đích của cái code đó, rồi có người viết lại cho nhanh, chứ nhìn code của bạn như tổ quạ, chắc là toàn ghi macro đây mà.
 
Upvote 0
Tui nói thật là bạn nói rõ mục đích của cái code đó, rồi có người viết lại cho nhanh, chứ nhìn code của bạn như tổ quạ, chắc là toàn ghi macro đây mà.

^^!, khi mình chạy code ở sheet wip detail , đến code ở sheet source thì báo lỗi không thực hiện được, thanks
 
Upvote 0
Web KT

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

Back
Top Bottom