Nhờ hỗ trợ tìm lỗi trong VBA

Liên hệ QC

hmhungtn

Thành viên mới
Tham gia
27/8/12
Bài viết
24
Được thích
4
Dear các anh chị!
Mình có làm theo trên mạng (youtube) để lập hàm xử lý việc nhập dữ liệu tự động, mục đích là sau khi nhập dữ liệu vào cột I đến cột M3 rồi bấm mũi tên màu xanh bên cạnh, thì dữ liệu vừa nhập sẽ được nhập vào bảng A13 đến E13 và sắp xếp theo thứ tự ABC, đồng thời xóa dữ liệu vừa nhập trong cột I đến M.
Sau khi làm xong thì báo bị lỗi mà không biết lỗi ở đâu, rất mong các ace chỉ giáo.

Xin chân thành cám ơn


Đoạn code như dưới đây: (gồm cả file đính kèm)

Sub Sapxep()
Range("A2:E13").Select
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("A3:A13") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("B3:B13") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("C3:C13") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Sheet1").Sort
.SetRange Range("A2:E12")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
Sub Luu_Du_Lieu_Theo_Video()
'1. Luu du lieu vao bang
'1.1. Tim dong cuoi cua bang du lieu
Dim DongCuoi As Long
DongCuoi = Sheet1.Cells(Rows.Count, 1).End(x1Up).Row + 1
'1.2. Luu du lieu vao dong cuoi
Sheet1.Range("A" & DongCuoi & ":" & "E" & DongCuoi).Value = Sheet1.Range("I3:M3").Value
'2. Xoa du lieu o vung nhap moi
Sheet1.Range("I3:L3").ClearContents
'3. Sap xep du lieu trong hang
Call Sapxep
End Sub
 

File đính kèm

  • Nhap du lieu tu dong 2.xlsm
    17.5 KB · Đọc: 8
Dear các anh chị!
Mình có làm theo trên mạng (youtube) để lập hàm xử lý việc nhập dữ liệu tự động, mục đích là sau khi nhập dữ liệu vào cột I đến cột M3 rồi bấm mũi tên màu xanh bên cạnh, thì dữ liệu vừa nhập sẽ được nhập vào bảng A13 đến E13 và sắp xếp theo thứ tự ABC, đồng thời xóa dữ liệu vừa nhập trong cột I đến M.
Sau khi làm xong thì báo bị lỗi mà không biết lỗi ở đâu, rất mong các ace chỉ giáo.

Xin chân thành cám ơn


Đoạn code như dưới đây: (gồm cả file đính kèm)

Sub Sapxep()
Range("A2:E13").Select
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("A3:A13") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("B3:B13") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("C3:C13") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Sheet1").Sort
.SetRange Range("A2:E12")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
Sub Luu_Du_Lieu_Theo_Video()
'1. Luu du lieu vao bang
'1.1. Tim dong cuoi cua bang du lieu
Dim DongCuoi As Long
DongCuoi = Sheet1.Cells(Rows.Count, 1).End(x1Up).Row + 1
'1.2. Luu du lieu vao dong cuoi
Sheet1.Range("A" & DongCuoi & ":" & "E" & DongCuoi).Value = Sheet1.Range("I3:M3").Value
'2. Xoa du lieu o vung nhap moi
Sheet1.Range("I3:L3").ClearContents
'3. Sap xep du lieu trong hang
Call Sapxep
End Sub
Sai dòng này:
PHP:
DongCuoi = Sheet1.Cells(Rows.Count, 1).End(x1Up).Row + 1
Sửa thành:
PHP:
DongCuoi = Sheet1.Cells(Rows.Count, 1).End(xlUp).Row + 1
 
Upvote 0
Dear các anh chị!
Mình có làm theo trên mạng (youtube) để lập hàm xử lý việc nhập dữ liệu tự động, mục đích là sau khi nhập dữ liệu vào cột I đến cột M3 rồi bấm mũi tên màu xanh bên cạnh, thì dữ liệu vừa nhập sẽ được nhập vào bảng A13 đến E13 và sắp xếp theo thứ tự ABC, đồng thời xóa dữ liệu vừa nhập trong cột I đến M.
Sau khi làm xong thì báo bị lỗi mà không biết lỗi ở đâu, rất mong các ace chỉ giáo.

Xin chân thành cám ơn
Dùng thử File sau:
 

File đính kèm

  • Nhap du lieu tu dong 2.xlsm
    17.3 KB · Đọc: 11
Upvote 0
Dear vanthinh3101!
Mình lại bị gặp một lỗi gần như trên, làm ơn kt hộ mình xem bị làm sao nhé:

Sub Sapxepdanhsachkh()
Range("B10:Z118").Select
ActiveWorkbook.Worksheets("Danhsach").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Danhsach").Sort.SortFields.Add Key:=Range( _
"B10:B118"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Danhsach").Sort
.SetRange Range("B10:Z118")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub

Sub Luu_Du_Lieu_khach_hang_theo_van()
'1. Luu du lieu vao bang
'1.1. Tim dong cuoi cua bang du lieu
Dim DongCuoi As Long
DongCuoi = Danhsach.Cells(Rows.Count, 1).End(xlUp).Row + 1
'1.2. Luu du lieu vao dong cuoi
Danhsach.Range("B" & DongCuoi & ":" & "Z" & DongCuoi).Value = Danhsach.Range("B3:D3").Value
'2. Xoa du lieu o vung nhap moi
Danhsach.Range("B3:D3").ClearContents
'3. Sap xep du lieu trong hang
Call Sapxepdanhsachkh
End Sub

khi thực hiện bị báo lỗi ở dòng
DongCuoi = Danhsach.Cells(Rows.Count, 1).End(xlUp).Row + 1
(Bảng dữ liệu của mình có nhiều sheet khác nhau, trong đó có một sheet tên "Danhsach"

Xin cám ơn
 
Upvote 0
Dear vanthinh3101!
Mình lại bị gặp một lỗi gần như trên, làm ơn kt hộ mình xem bị làm sao nhé:

Sub Sapxepdanhsachkh()
Range("B10:Z118").Select
ActiveWorkbook.Worksheets("Danhsach").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Danhsach").Sort.SortFields.Add Key:=Range( _
"B10:B118"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Danhsach").Sort
.SetRange Range("B10:Z118")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub

Sub Luu_Du_Lieu_khach_hang_theo_van()
'1. Luu du lieu vao bang
'1.1. Tim dong cuoi cua bang du lieu
Dim DongCuoi As Long
DongCuoi = Danhsach.Cells(Rows.Count, 1).End(xlUp).Row + 1
'1.2. Luu du lieu vao dong cuoi
Danhsach.Range("B" & DongCuoi & ":" & "Z" & DongCuoi).Value = Danhsach.Range("B3:D3").Value
'2. Xoa du lieu o vung nhap moi
Danhsach.Range("B3:D3").ClearContents
'3. Sap xep du lieu trong hang
Call Sapxepdanhsachkh
End Sub

khi thực hiện bị báo lỗi ở dòng
DongCuoi = Danhsach.Cells(Rows.Count, 1).End(xlUp).Row + 1
(Bảng dữ liệu của mình có nhiều sheet khác nhau, trong đó có một sheet tên "Danhsach"

Xin cám ơn
đây bạn sửa thế này nhé
DongCuoi = sheets("Danhsach").Cells(Rows.Count, 1).End(xlUp).Row + 1
 
Lần chỉnh sửa cuối:
Upvote 0
Sửa 1 chỗ chưa đủ. Những dòng sau bạn cũng có Danhsach.

Tất cả các chỗ có Danhsach. thay bằng Sheets("Danhsach").
Nếu là tôi thì tôi Set Danhsach = WorkSheets("Danhsach") luôn cho khoẻ, vừa chạy nhanh hơn vài phần triệu giây.
 
Upvote 0
Nếu là tôi thì tôi Set Danhsach = WorkSheets("Danhsach") luôn cho khoẻ, vừa chạy nhanh hơn vài phần triệu giây.
Đúng rồi. Nhưng lúc đó lại là ý khác. Rồi người ta sẽ vẫn thắc mắc là tại sao họ đã sửa rồi mà vẫn "dính". Tôi không đề cập tới những thứ khác vì tính tôi đã mổ sẻ thì từng dòng một, viết ít nhất nửa trang. Mà lúc đó tôi lại không có hứng. :D

Đôi lúc chỉ cho người ta hướng khác, nhưng quan trọng hơn là chỉ cho họ chỗ sai để tương lai không mắc lại lỗi đó nữa.
 
Upvote 0
Đúng rồi. Nhưng lúc đó lại là ý khác. Rồi người ta sẽ vẫn thắc mắc là tại sao họ đã sửa rồi mà vẫn "dính". Tôi không đề cập tới những thứ khác vì tính tôi đã mổ sẻ thì từng dòng một, viết ít nhất nửa trang. Mà lúc đó tôi lại không có hứng. :D

Đôi lúc chỉ cho người ta hướng khác, nhưng quan trọng hơn là chỉ cho họ chỗ sai để tương lai không mắc lại lỗi đó nữa.
Không, tôi chỉ mách cho những bạn khác. Chứ thớt thì tôi thua vì không dám đấu tiếng Mẽo.
 
Upvote 0
Không, tôi chỉ mách cho những bạn khác. Chứ thớt thì tôi thua vì không dám đấu tiếng Mẽo.
Bác còn biết là tiếng Mẽo chứ tôi chịu.

Thank còn đoán mò được vì nhiều người hay "khoe". And cũng đoán mò được vì biết lập trình. Còn Brgs thì chào thua.
 
Upvote 0
Sửa 1 chỗ chưa đủ. Những dòng sau bạn cũng có Danhsach.

Tất cả các chỗ có Danhsach. thay bằng Sheets("Danhsach").
Dear Batman1!
Mình đúng là sơ ý không copy vào các chỗ khác, mình vừa sửa lại và đã ok rồi, cám ơn bạn nhiều.
Nhân đây làm ơn cho mình hỏi luôn, trong bảng của mình đã đặt sẵn công thức, có lệnh nào để sau khi mình chèn dòng tự động như 2 dòng lệnh của mình xong thì công thức ở các ô phía trên sẽ tự động copy vào dòng vừa được chèn không?
Cột B là cột sẽ được sắp xếp theo thứ tự, còn từ cột C đến cột Z là có lệnh cho sẵn.
(mình mới đang tập tọe ứng dụng VBA nên nhiều chỗ chưa rành)

Thanks and Brgs
 
Upvote 0
Bác còn biết là tiếng Mẽo chứ tôi chịu.

Thank còn đoán mò được vì nhiều người hay "khoe". And cũng đoán mò được vì biết lập trình. Còn Brgs thì chào thua.
Tôi thì cũng đoán mò thôi, chắc nó là Bét rề ga (Bad regards), Bơ lá đi rắc (Bloody rags), hay Bợ rác (Brags) gì đó - cả ba đều là tiếng dùng để chửi.
 
Upvote 0
Bác còn biết là tiếng Mẽo chứ tôi chịu.

Thank còn đoán mò được vì nhiều người hay "khoe". And cũng đoán mò được vì biết lập trình. Còn Brgs thì chào thua.
Chào A/C Batman1!
Cũng do thói quen thỉnh thoảng viết thư giao dịch với đối tác nước ngoài nên trong lúc cám ơn ở cuối thư mình hay viết tắt như vậy, nếu có gì không phải mong A/C bỏ quá cho.
Bài đã được tự động gộp:

Tôi thì cũng đoán mò thôi, chắc nó là Bét rề ga (Bad regards), Bơ lá đi rắc (Bloody rags), hay Bợ rác (Brags) gì đó - cả ba đều là tiếng dùng để chửi.

VetMini đúng là suy luận cũng có lý của nó, xin đính chính mấy câu viết tắt như sau:
Thanks &Best regards
 
Upvote 0
Web KT
Back
Top Bottom