Góp ý cho bạn:Mọi chi tiết xin các bạn xem giúp trong File đính kèm – Xin trân trọng cảm ơn !
Cảm ơn be09 nhiều - mình sẽ rút kinh nghiệm, Nếu được bạn chuyển giúp sang Box Lập trình với Excel. và xin có lời phúc đáp sau :Góp ý cho bạn:
1/ Nên dùng tiêu đề ngắn gọn như: Quản lý khách sạn hay theo dõi khách thuê phòng khách sạn. Chủ yếu là nội dung cần nêu rõ ràng, cụ thể vấn đề cần.
2/ Yêu cầu sử dụng VBA thì phải đăng bài trong Box Lập trình với Excel.
3/ Tham khảo bài viết ở Link sau:
https://www.giaiphapexcel.com/diendan/threads/quản-lý-khách-sạn.135399/
Mình có ý sau về sơ đồ fòng nghỉ với bạn, như sau:
View attachment 203958
Các ô màu bên trái (A) thể hiện 3 loại fòng của bạn;
Các ô màu bên fải (B) thể hiện:
Ô đỏ luôn bên trái cao nhất: Màu đỏ nghĩa là fòng đang có khách; Không màu, hay màu trắng là fòng đang trống;
Các ô cuối fải nhất của các fòng: Màu xanh là có dùng dịch vụ cộng thêm như điện thoại, Bia, rượu, nước giải khác, . . .
Còn các ô trên cùng fải nhất là số ngày khách đã trãi qua ở fòng này.
2ui ước: Khi giao chìa khóa fòng cho khách, ta bật ô trái nhất trên cùng thành màu đỏ
Hàng ngày khách nghỉ, ta ghi vô sơ đồ (bằng những con số), khi khách chưa báo trả fòng
Cũng hàng ngày, các nhân viên trực fòng sẽ báo để ta bôi màu (khác trắng) ô fải thấp nhất trong sơ đồ; Tất nhiên trực fòng sẽ fải bổ sung loại hàng dịch vụ mà trước đó khách đã xài.
Số hàng khách đã sử dụng fải ghi lại để khi khách báo trả fòng thì tất toán trên hóa đơn.
Sau khi khách trả chìa khóa fòng & tất toán, ta xóa hết màu & số liệu đã có trước đó trong fòng ngỏ hầu chờ đón lượt khách mới
Đây chỉ là ý tưởng của mình thôi; Còn chuyện có fù hợp với thực tiển hay không mình không rõ à nha!
Chúc ngày cuối tuần hạnh phúc đến với các bạn!
Anh dùng thử file này. Góp ý thêm: cột X (sheet DATA) nếu giờ trả là 14:05 thì không có AM hay PM phía sau.Mọi chi tiết xin các bạn xem giúp trong File đính kèm – Xin trân trọng cảm ơn !
Rất cảm ơn bạn đã quan tâm. Mình muốn dùng code Vba vì nếu dùng hàm và dùng cột phụ nhiều file sẽ rất nặng. Mình đã sử dụng Table và một phần nhỏ code tự động cập nhật ngày nhưng nếu dùng nhiều tới 50.000 dòng thì sao nhỉ FILE SẼ NẶNG LẮM. Bạn thử xem file đính kèm của mình đã làm và cho thêm ý kiến nhé - Xin cảm ơnAnh dùng thử file này. Góp ý thêm: cột X (sheet DATA) nếu giờ trả là 14:05 thì không có AM hay PM phía sau.
Góp ý tiếp cho bạn:Rất cảm ơn bạn đã quan tâm. Mình muốn dùng code Vba vì nếu dùng hàm và dùng cột phụ nhiều file sẽ rất nặng. Mình đã sử dụng Table và một phần nhỏ code tự động cập nhật ngày nhưng nếu dùng nhiều tới 50.000 dòng thì sao nhỉ FILE SẼ NẶNG LẮM. Bạn thử xem file đính kèm của mình đã làm và cho thêm ý kiến nhé - Xin cảm ơn
Góp ý tiếp cho bạn:
1/ Bài 5 bạn có nêu: File thực tế tôi sẽ thiết kế tất cả mọi phát sinh do lễ tân thực hiện trên Form nhập liệu, cái này bạn nên có 1 sheet chứa 1 bảng liệt kê loại phòng, đơn giá phòng và 1 bảng liệt kê đơn giá các loại dịch vụ khác.
2/ Bạn nên kê ra quy trình để các thành viên biết mà thiết kế cho phù hợp, ví dụ:
Nhận phòng > tính tiền phòng + các dịch vụ khác (sau khi nhân viên kiểm tra phòng).
Nếu theo quy trình này thì phải có 1 phiếu tính tiền phòng và các dịch vụ.
3/ Như vậy thì phải có 2 sheet theo dõi.
- 1 sheet theo dõi và hiện kết quả vào sơ đồ phòng để nhận biết phòng nào trống, phòng nào đang có khách.
- 1 sheet theo dõi chung tiền phòng và các dịch vụ khác.
dhn46 trả lời bác cho mục "MỘT LÀ"Mấy ngày qua Không thể nào gửi được bài đi Mong các bạn cảm thông
Cảm ơn bạn be09 tôi gửi bản thiết kế theo cách tổ chức quản lý của tôi. Một số vướng mắc cần được giúp đỡ tôi ghi cụ thể trong File mong bạn cùng các thành viên xem và giúp đỡ
- Trân trọng cảm ơn
Private Sub Worksheet_Change(ByVal Target As Range)
Dim indez As Variant, wsKH As Worksheet, wsTongHop As Worksheet
'---> Neu Target la G3
If Target.Address = "$G$3" Then
'---> Neu G3 <> ""
If WorksheetFunction.Trim(Target.Value) <> "" Then
Set wsKH = Worksheets("DS_KH")
'---> Tim kiem Ma so thue tai G3 trong sheet DS_KH
indez = Application.Match(Target.Value, wsKH.Range("D8:D" & wsKH.Range("D" & wsKH.Rows.Count).End(xlUp).Row), 0)
'---> Neu tim thay thi lay du lieu
If TypeName(indez) <> "Error" Then
Target.Offset(1, -2).Value = wsKH.Range("E" & (7 + indez)).Value
Target.Offset(2, -2).Value = wsKH.Range("F" & (7 + indez)).Value
Target.Offset(3, -2).Value = wsKH.Range("G" & (7 + indez)).Value
Target.Offset(3, -0).Value = wsKH.Range("H" & (7 + indez)).Value
Target.Offset(1, 2).Value = wsKH.Range("I" & (7 + indez)).Value
'---> Neu khong tim thay thi xoa Form (---> Day la nguyen nhan van de "MOT LA")
Else
ClearForm False
End If
End If
End If
If Target.Address = "$E$3" Then
ClearForm
If Not IsNumeric(Target.Value) Or WorksheetFunction.Trim(Target.Value) = "" Then Exit Sub
indez = SearchIndezCT(Target.Value)
LoadDataByIndez indez
End If
End Sub
Xin cảm ơn dhn46. đã chỉ rõ và tôi đã xử lý được cảm ơn bạn nhiều. Rất mong có điều kiện bạn giúp thêm cho phần HAI LÀ được không ? Cảm ơn bạn nhiều lắmdhn46 trả lời bác cho mục "MỘT LÀ"
Trong sheet FORM
Mã:Private Sub Worksheet_Change(ByVal Target As Range) Dim indez As Variant, wsKH As Worksheet, wsTongHop As Worksheet '---> Neu Target la G3 If Target.Address = "$G$3" Then '---> Neu G3 <> "" If WorksheetFunction.Trim(Target.Value) <> "" Then Set wsKH = Worksheets("DS_KH") '---> Tim kiem Ma so thue tai G3 trong sheet DS_KH indez = Application.Match(Target.Value, wsKH.Range("D8:D" & wsKH.Range("D" & wsKH.Rows.Count).End(xlUp).Row), 0) '---> Neu tim thay thi lay du lieu If TypeName(indez) <> "Error" Then Target.Offset(1, -2).Value = wsKH.Range("E" & (7 + indez)).Value Target.Offset(2, -2).Value = wsKH.Range("F" & (7 + indez)).Value Target.Offset(3, -2).Value = wsKH.Range("G" & (7 + indez)).Value Target.Offset(3, -0).Value = wsKH.Range("H" & (7 + indez)).Value Target.Offset(1, 2).Value = wsKH.Range("I" & (7 + indez)).Value '---> Neu khong tim thay thi xoa Form (---> Day la nguyen nhan van de "MOT LA") Else ClearForm False End If End If End If If Target.Address = "$E$3" Then ClearForm If Not IsNumeric(Target.Value) Or WorksheetFunction.Trim(Target.Value) = "" Then Exit Sub indez = SearchIndezCT(Target.Value) LoadDataByIndez indez End If End Sub
Ha ha bạn giỏi tiếng Anh lại cả Bun và Nga nữa sao ? Giỏi nhiều thế . Cảm ơn bạn đã góp ý . mong rằng nhận được sự trợ giúp thêm của các bạnTheo mình, cái trang 'Menu' đó nên xây dựng sau cùng;
Giờ muốn sờ đến cái "Hai là" của bạn cũng không dễ, xin chào!
Khách sạn của bạn mang tên "Hữu nghị", nhưng cái menu của bạn chưa thân thiện cho người có nhã í giúp bạn cho lắm.