Thầy ơi, khi e gọi userform lên nó báo lỗi vậy là sao ạ. Thầy giúp e với ạ
ạ
khi e bấm debug thì báo lỗi chỗ lệnh gọi userform
Chào bạn bạn gửi lại file giúp gitiho nhé.
thầy hỗ trợ giúp e ạ
Chào bạn ở đây trong file bạn xem lại sub laydulieu xem có trả ra kết quả vào listbox không nhé
Trường hợp không có database thì thêm như sau để tránh lỗi
On Error Resume Next
Sub Laydulieu() ' lay du lieu vao lbx thong tin xe tren uf_NhapXe
On Error Resume Next
Dim Arr As Variant, i As Long
Spart = ThisWorkbook.Path + "\Database.accdb"
sqlcmd = "SELECT MAXECNBH,MAXETKKH,HIEUXE,CHUNGLOAI,MAMAU,MAUXE,GIANHAP FROM Hieu_Xe"
Arr = QuerySQL(sqlcmd, Spart, False)
For i = 0 To UBound(Arr, 1)
Arr(i, 6) = Format(Arr(i, 6), "#,###")
Next
uf_NhapXe.lbx_ThongTinXe.Clear
If IsArray(Arr) Then
uf_NhapXe.lbx_ThongTinXe.List = Arr
uf_NhapXe.lbx_ThongTinXe.ColumnCount = 7
End If
End Sub
Phần load các combobox giá trị nên dùng cách này thay vì đặt name
Private Sub UserForm_Initialize()
'Nap DS cho cbx Noi Nhap Xe
Dim ChonNoiNhapXe As Object, ChonHangXe As Object
Call Napnhapxe
'Nap DS cho cbx Hang Xe
For Each ChonHangXe In Sheet11.Range("List_HangXe")
cbx_HangXe.AddItem ChonHangXe
Next
'Nap DS cho lbx Thong Tin Xe
Call Laydulieu
cmd_Luu.Enabled = False
End Sub
Sub Napnhapxe()
Dim arr As Variant, dc As Long
cbx_NoiNhapXe.Clear
arr = Sheet11.Range("B1:B" & TimDongCuoi(Sheet11, "B")).Value
cbx_NoiNhapXe.List = arr
End Sub
Đưa vào array thì sẽ không cần đặt name động vẫn ok phần này.
thêm phần nâng cao là có thể app dụng seach ngay trên combobox nhé.
DẠ E CẢM ƠN THẦY Ạ
E LÀM DC RỒI, NHƯNG GIỜ LẠI BÁO LỖI TRƯỜNG TRUY CẬP VÀ TRƯỜNG ĐÍCH KO BẰNG NHAU LÀ: SỐ TRƯỜNG TRONG DATABASE VÀ TRƯỜNG TRONG USERFORM KO BẰNG NHAU PHẢI KO Ạ
Phần này bạn phải xem lại data base của bạn nhé, xem select có đúng không? bạn có thể tham khảo thêm khoá access của gitiho
DẠ THẦY ƠI, HƯỚNG DẪN E CÁCH REFESH DỮ LIỆU TRONG USERFORM VỚI Ạ,
KHI E THÊM DỮ LIỆU MỚI VÀO DATABASE TRONG ACCESS CÓ DỮ LIỆU, NHƯNG KHI XUẤT BÁO CÁO THÌ DỮ LIỆU LẠI KO CÓ. THẦY HƯỚNG DẪN GIÚP E Ạ
Chào bạn bạn nút refesh sẽ là nút bạn lấy lại giữ liệu
Bạn làm một sub như sau
Sub Laydulieu() ' lay du lieu vao lbx thong tin xe tren uf_NhapXegán vào nút nào đó hoặc sự kiện như load
On Error Resume Next
Dim Arr As Variant, i As Long
Spart = ThisWorkbook.Path + "\Database.accdb"
sqlcmd = "SELECT MAXECNBH,MAXETKKH,HIEUXE,CHUNGLOAI,MAMAU,MAUXE,GIANHAP FROM Hieu_Xe"
Arr = QuerySQL(sqlcmd, Spart, False)
For i = 0 To UBound(Arr, 1)
Arr(i, 6) = Format(Arr(i, 6), "#,###")
Next
uf_NhapXe.lbx_ThongTinXe.Clear
If IsArray(Arr) Then
uf_NhapXe.lbx_ThongTinXe.List = Arr
uf_NhapXe.lbx_ThongTinXe.ColumnCount = 7
End If
End Sub