Nhờ mọi người giúp về code UserForm báo cáo tháng (1 người xem)

  • Thread starter Thread starter tatacom
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

tatacom

Thành viên mới
Tham gia
15/6/12
Bài viết
7
Được thích
1
Mọi người xem file mình đính kèm :
1/ Mình muốn tạo userform có nút combobox (thể hiện các tháng) và khi chọn sẽ tự động nhập dữ liệu từ sheet "Data" sang sheet "Report".
2/ Dữ liệu nhập ở sheet "Report" với điều kiện là :
a/Khi chọn combobox là tháng 1 thì điều kiện ở cột B sheet"Data" là "Jan"sẽ lấy cột date và cột Description/Remarks/Customer sheet Data qua sheet "Report"
b/Điều kiện: cột B sheet"Data"là "Jan" và cột REIMBURSEMENT "Lodging,Meals,Office Supp.,Postage,Phone,Parking,Other" sẽ lấy số tiền ở cột DEBIT qua các cột tương ứng ở sheet"Report" với số tiền ở cột DEBIT.
c/Tương tự khi chọn các tháng còn lại ở combobox.
3/Khi nhập thêm, xóa, thay đổi thông tin ở sheet"Data" thì không ảnh hưởng đến các đoạn text ở cuối sheet "Report"
4/ Ô total expense ở cuối các dòng được chuyển qua sheet"Report" sẽ là tổng các giá trị ở các cột "Lodging cho đến cột Other"
Lời diễn đạt của mình nếu có khó hiểu thì bỏ qua cho mình và mình sẽ giải thích lại...
Cảm ơn mọi người rất nhiều.
 

File đính kèm

Mong rằng sẽ đúng í của bạn!
 

File đính kèm

Upvote 0
Mong rằng sẽ đúng í của bạn!
Cảm ơn bạn Hoang2013,
Bạn có thể điều chỉnh thêm giúp mình:
1/Userform sẽ xuất hiện ở sheet " Data"
2/Khi mình nhập nhiều dòng với điều kiện ở cột B sheet"Data" chẳng hạn là "Jan" thì bị báo lỗi
3/ Ô total expense sheet"Report" sẽ là tổng các giá trị ở các cột "Lodging cho đến cột Other"
 
Upvote 0
Bạn có thể điều chỉnh thêm giúp mình:
1/Userform sẽ xuất hiện ở sheet " Data"
2/Khi mình nhập nhiều dòng với điều kiện ở cột B sheet"Data" chẳng hạn là "Jan" thì bị báo lỗi
3/ Ô total expense sheet"Report" sẽ là tổng các giá trị ở các cột "Lodging cho đến cột Other"

(1) Bạn thử các bước sau:
* Phải chuột vô tên trang tính 'Report' & chọn dòng 'View Code'
* Tiếp theo lấy chuột chọn hết 3 dòng lệnh VBA vừa xuất hiện & bấm {CTRL}+X;
Sau đó sang trang 'Data' & phải chuột vô tên nó; Tiếp theo ta bấm {CTRL}+V để dán 3 dòng code này lên cửa sổ vừa xuất hiện
Sau cuối là lưu lại những hành động vừa rồi.
(1.1) Tiếp theo, bạn tìm trong Form macro gần giống với nội dung này:
PHP:
Private Sub CBThg_Change()
 Dim Sh As Worksheet, Arr()
 ReDim dArr(1 To 18, 1 To 9)
 Dim J As Long, W As Long, Col As Byte
 Dim rM As String
 Set Sh = ThisWorkbook.Worksheets("Report")
 Sh.[A9].Resize(18, 9).Value = dArr()
 Arr() = Sheets("Data").[b2].CurrentRegion.Offset(1).Value
 For J = 1 To (UBound(Arr()) - 1)
    If Arr(J, 2) = Me!CBThg.Text Then
        W = W + 1:                          dArr(W, 1) = Arr(J, 1)
        dArr(W, 2) = Arr(J, 7):             rM = Arr(J, 4)
        Col = Switch(rM = "Lodging", 3, rM = "Meals", 4, rM = "Office Supp.", 5, _
            rM = "Postage", 6, rM = "Phone", 7, rM = "Parking", 8, rM = "Other", 9)
        dArr(W, Col) = Arr(J, 5)
    End If
 Next J
 Sh.[A9].Resize(W, 9).Value = dArr()
 MsgBox "Xong Ròi!":                        Sh.Select
End Sub

Bạn copy macro mới này & chép đè toàn bộ cái đó
Tiến hành lưu nữa là được.

(2) Báo lỗi khi số dòng vượt giới hạn do bạn thiết kế là từ dòng 9 đến dòng 26 thôi (trang 'Report').
Còn nếu lỗi nào khác thì bạn cần nêu rõ hơn để chỉnh sửa.

(3) "Ô total expense sheet"Report" sẽ là tổng . . . " : Vùng này của bạn sao vẫn vậy!
& bạn muốn sao thì cú tiện mà làm!

Chúc thành công!
 
Upvote 0
(1) Bạn thử các bước sau:
* Phải chuột vô tên trang tính 'Report' & chọn dòng 'View Code'
* Tiếp theo lấy chuột chọn hết 3 dòng lệnh VBA vừa xuất hiện & bấm {CTRL}+X;
Sau đó sang trang 'Data' & phải chuột vô tên nó; Tiếp theo ta bấm {CTRL}+V để dán 3 dòng code này lên cửa sổ vừa xuất hiện
Sau cuối là lưu lại những hành động vừa rồi.
(1.1) Tiếp theo, bạn tìm trong Form macro gần giống với nội dung này:
PHP:
Private Sub CBThg_Change()
 Dim Sh As Worksheet, Arr()
 ReDim dArr(1 To 18, 1 To 9)
 Dim J As Long, W As Long, Col As Byte
 Dim rM As String
 Set Sh = ThisWorkbook.Worksheets("Report")
 Sh.[A9].Resize(18, 9).Value = dArr()
 Arr() = Sheets("Data").[b2].CurrentRegion.Offset(1).Value
 For J = 1 To (UBound(Arr()) - 1)
    If Arr(J, 2) = Me!CBThg.Text Then
        W = W + 1:                          dArr(W, 1) = Arr(J, 1)
        dArr(W, 2) = Arr(J, 7):             rM = Arr(J, 4)
        Col = Switch(rM = "Lodging", 3, rM = "Meals", 4, rM = "Office Supp.", 5, _
            rM = "Postage", 6, rM = "Phone", 7, rM = "Parking", 8, rM = "Other", 9)
        dArr(W, Col) = Arr(J, 5)
    End If
 Next J
 Sh.[A9].Resize(W, 9).Value = dArr()
 MsgBox "Xong Ròi!":                        Sh.Select
End Sub

Bạn copy macro mới này & chép đè toàn bộ cái đó
Tiến hành lưu nữa là được.

(2) Báo lỗi khi số dòng vượt giới hạn do bạn thiết kế là từ dòng 9 đến dòng 26 thôi (trang 'Report').
Còn nếu lỗi nào khác thì bạn cần nêu rõ hơn để chỉnh sửa.

(3) "Ô total expense sheet"Report" sẽ là tổng . . . " : Vùng này của bạn sao vẫn vậy!
& bạn muốn sao thì cú tiện mà làm!

Chúc thành công!
Mình làm theo hướng dẫn của bạn và rất đúng theo ý mình.
Cảm ơn bạn rất nhiều khi giúp đỡ mình !
 
Upvote 0
Web KT

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

Back
Top Bottom