Nguyễn Hoàng Long
Nguyễn Hoàng Long
Thảo luận 25 thảo luận
Vỗ tay 0 vỗ tay
Lượt xem 448 lượt xem

MÌnh sử dụng Userform để nhập liệu nhưng khi chạy đoạn code dưới đây

MÌnh sử dụng Userform để nhập liệu, nhưng khi chạy đoạn code dưới đây thì lỗi và file exel bị đóng luôn, ko biết lỗi ở chổ nào?
Bạn hỗ trợ mình vơi, cảm ơn!

Option Explicit

Private Sub boqua_Click()
Unload nhap_lieu
End Sub

Private Sub hancuoi_AfterUpdate()
hancuoi = VBA.Format(hancuoi, "dd/mm/yyyy")
End Sub


Private Sub ngaygiao_AfterUpdate()
ngaygiao = VBA.Format(ngaygiao, "dd/mm/yyyy")
End Sub


Private Sub sotien_Change()
sotien = VBA.Format(sotien, "#,##0")
End Sub



Private Sub themmoi_Click()
Dim dongcuoi As Long
dongcuoi = Sheets("Data").Range("c" & Rows.Count).End(xlUp).Row + 1

With Sheets("Data")
.Range("c" & dongcuoi).Value = tenkhachhang.Value
.Range("d" & dongcuoi).Value = cmnd.Value + 0
.Range("e" & dongcuoi).Value = noidung.Value
.Range("f" & dongcuoi).Value = sotien.Value + 0
.Range("g" & dongcuoi).Value = trangthai.Value
.Range("h" & dongcuoi).Value = cappheduyet.Value
.Range("i" & dongcuoi).Value = cbqlkh.Value
.Range("j" & dongcuoi).Value = CDate(ngaygiao.Value)
.Range("k" & dongcuoi).Value = CDate(hancuoi.Value)
.Range("l" & dongcuoi).Value = ghichu.Value

End With

MsgBox "Khach hang da duoc them moi", 0, "THONG BAO"
Unload nhap_lieu
nhap_lieu.Show


End Sub
Thảo luận 25 câu trả lời
Lượt xem 448 lượt xem
Vỗ tay vỗ tay
Nguyễn Hoàng Long 22:04 - Apr 05, 2020
Chào bạn bạn có thể đăng file lên được không?
Vỗ tay vỗ tay
Nguyễn Hoàng Long 23:04 - Apr 05, 2020
Nguyễn Hoàng Long 00:04 - Apr 06, 2020
Nguyễn Hoàng Long 05:04 - Apr 06, 2020
Chào bạn tệp không tồn tại.
Vỗ tay vỗ tay
Nguyễn Hoàng Long 06:04 - Apr 06, 2020
Sao gio add file ko dc
Vỗ tay vỗ tay
Nguyễn Hoàng Long 06:04 - Apr 06, 2020
gửi mail dc ko ban?
Vỗ tay vỗ tay
Nguyễn Hoàng Long 06:04 - Apr 06, 2020
Nguyễn Hoàng Long 06:04 - Apr 06, 2020
ok dc rồi, nhờ bạn xem giúp
Vỗ tay vỗ tay
Nguyễn Hoàng Long 08:04 - Apr 06, 2020
chào bạn vẫn không vào được
Vỗ tay vỗ tay
Nguyễn Hoàng Long 21:04 - Apr 07, 2020
link bạn gửi cần thiết lập quyền cho mọi người nhận link đều xem được. nếu không sẽ bị yêu cầu quyền truy cập, ko xem được.
Trong code trên của bạn mình không thấy có lỗi gì. Bạn thử kiểm tra lại với file excel khác (tạo 1 file excel mới, đưa userform kèm code này vào) xem có bị lỗi không
Hoặc bạn chụp hình lỗi (nếu có)
Vỗ tay vỗ tay
Nguyễn Hoàng Long 21:04 - Apr 07, 2020
Vỗ tay vỗ tay
Nguyễn Hoàng Long 21:04 - Apr 07, 2020
dong_kh = Application.WorksheetFunction.Match(doitrangthai.kh_capnhat, Sheets("Data").Range("ds_CMND"), 0)
Cho mình hỏi tại sao khi mình gọi hàm exel bằng cách như trên VBA lại báo lỗi hàm Match
Vỗ tay vỗ tay
Nguyễn Hoàng Long 22:04 - Apr 07, 2020
Bạn đang thiết lập bảng dữ liệu ở dạng Table, như thế code tìm dòng cuối theo phương pháp thông thường (Range) sẽ không đúng.
Bạn có thể xử lý theo 2 cách:
- Cách 1: Đưa bảng dữ liệu về dạng bảng thường (chọn thẻ Table Design trên thanh công cụ, chọn tiếp mục Convert to Range) thì code chạy đúng.
- Cách 2: thay bằng code tìm dòng cuối của đối tượng Table
Ví dụ mình có code như sau

With Range("Table1")
LastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
Debug.Print LastRow
End With

Table1 bạn đổi thành tên table của bạn
số 1 sau chữ Rows.Count chính là số thứ tự của cột muốn tìm dòng cuối trong bảng
Vỗ tay vỗ tay
Nguyễn Hoàng Long 22:04 - Apr 07, 2020
thường khi làm việc với bảng theo dạng Table trong Excel thì code sẽ phức tạp hơn, do đối tượng này cần lập trình riêng, ko giống với cách viết thông thường.
Nội dung này bạn có thể tra cứu thêm trên google để biết rõ hơn, vì nội dung này ít khi sử dụng.
ví dụ mình tra cứu code tìm dòng cuối trong table thì mình gõ trên google là:
how to find last row in excel table vba
sau đó tìm ra bài viết này:
https://www.mrexcel.com/board/threads...
đọc xem code họ viết gì là có thể tìm được code đúng.
Vỗ tay vỗ tay
Nguyễn Hoàng Long 22:04 - Apr 07, 2020
Cảm ơn bạn nhiều!
Debug.Print là sao bạn? Bạn giải thích dùm mình dòng lệnh đó được ko?
Vỗ tay vỗ tay
Nguyễn Hoàng Long 22:04 - Apr 07, 2020
debug.print là ghi kết quả ra cửa sổ immediate thôi, bạn có thể thay debug.print bằng msgbox
Với lỗi hàm match cũng liên quan tới Table, bạn thay đổi lại về Range thì hàm Match đúng.
Nếu giữ nguyên Table thì hàm match phải viết theo cách viết với Table (bạn viết thử trên excel trước sẽ rõ)
Vỗ tay vỗ tay
Nguyễn Hoàng Long 23:04 - Apr 07, 2020
Mình nghĩ đối tượng table rất phổ biến, đặt bệt là những người thường xuyên làm báo cáo bằng pivot table, các bạn có thể thêm một chương hướng dẫn về cách lập trình với đối tượng này được không?
Vỗ tay vỗ tay
Nguyễn Hoàng Long 00:04 - Apr 08, 2020
Có 2 nhánh để học:
- Nhánh 1: quản lý dữ liệu bằng dạng bảng thông thường (Range) => Sử dụng VBA để tự động hóa
- Nhánh 2: quản lý dữ liệu bằng dạng Table tiêu chuẩn => Sử dụng Power Query để tự động hóa
Trước đây mình cũng thử áp dụng VBA sang Table, nhưng thấy ko hiệu quả bằng Power Query. Bạn thử tìm hiểu sang Power Query sẽ thấy rõ điều này.
Việc ứng dụng VBA vào table sẽ gần như lặp lại những gì Power Query đã làm được.
Nên mình ko hướng dẫn việc áp dụng VBA vào Table mà sẽ phát triển cả 2 khóa học này. Hiện khóa học về Power Query mình đang xây dựng, sẽ ra mắt trong thời gian tới.
Vỗ tay vỗ tay
Nguyễn Hoàng Long 00:04 - Apr 08, 2020
Bạn hiểu nguyên tắc áp dụng VBA trên dạng Range thì hoàn toàn có thể ứng dụng sang dạng Table được (về nguyên tắc giống nhau), nếu có chỗ nào ko hiểu bạn có thể hỏi sẽ được hỗ trợ.
Vỗ tay vỗ tay
Nguyễn Hoàng Long 01:04 - Apr 08, 2020
Cảm ơn bạn nhiều, khi nò có khóa về Power Query thông tin cho mình nhé.
Vỗ tay vỗ tay
Nguyễn Hoàng Long 21:04 - Apr 08, 2020
chào bạn, cảm ơn bạn đã quan tâm khi nào có khóa học bên mình sẽ thông báo ạ.
Vỗ tay vỗ tay
Nguyễn Hoàng Long 05:04 - Apr 25, 2020
Mình thấy chương trình quản lý dự án bằng vba excel trên video hay quá. Có thể cho mình xin file tham khảo không?
Vỗ tay vỗ tay
Nguyễn Hoàng Long 10:04 - Apr 25, 2020
Chương trình đó do 1 học viên làm mảng quản lý dự án họ tự làm sau khi học xong VBA. Vì lý do bản quyền nên không chia sẻ được. Bạn có thể lên mạng search các file excel về quản lý dự án, các file có đuôi .xlsm hoặc .xlsb là file có VBA
Vỗ tay vỗ tay
Nguyễn Hoàng Long 13:12 - Dec 14, 2021

phần điều kiện khi áp dụng worksheet change mà khi dữ liệu file khác cập nhật thì chạy filter tại file hiện tại có được không ạ

Vỗ tay vỗ tay
Nguyễn Hoàng Long 14:12 - Dec 14, 2021

@ Thu Hà: không nên làm vậy vì code thường chỉ chạy với workbook đang mở, nếu workbook đóng sẽ không can thiệp được, hoặc dễ gặp lỗi.

Bạn nên lập trình sự kiện chỉ hoạt động trong workbook hiện tại thôi (ThisWorkbook - là workbook chứa đoạn code, chứa sheet nơi diễn ra sự kiện). Không nên gắn code sự kiện tới 1 workbook khác.

Khi làm việc với workbook khác thường là lấy dữ liệu từ workbook đó vào ThisWorkbook thôi, không nên dùng 1 đoạn code làm việc song song nhiều workbook.

Vỗ tay vỗ tay
Câu hỏi liên quan
© 2020 - Bản quyền của Công Ty Cổ Phần Công Nghệ Giáo Dục Gitiho Việt Nam
Giấy chứng nhận Đăng ký doanh nghiệp số: 0109077145, cấp bởi Sở Kế hoạch và Đầu tư TP. Hà Nội
Giấy phép mạng xã hội số: 588, cấp bởi Bộ Thông tin và Truyền thông