Nhờ các cao thủ giúp đỡ - file tính tiền quán cafe (1 người xem)

Liên hệ QC

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

Patrick Tran 1979

Thành viên mới
Tham gia
7/12/15
Bài viết
4
Được thích
0
- Trước hết xin cám ơn bạn phung_biasg đã share chương trình. Từ chương trình của bạn, tôi đã được học hỏi thêm rất nhiều về excel.
- Tôi đã ứng dụng thử vào mô hình quán cafe. Và ct hoạt động khá ổn. Duy còn một vấn đề, mà tôi mày mò rất lâu vẫn k xử lý được -+*/, mong bạn và anh em trong diễn đàn với kinh nghiệm và có kiến thực bài bản có thể giúp tôi.
- Vấn đề là ntn : tôi k thể có mặt 24/24. Do đó, tôi phải thuê nv quản lý. Thành thử, tôi rất muốn Sheet "Data" được dấu đi, hoặc làm cách nào đó mà chỉ mình tôi có thể xem/ xử lý số liệu trong sheet này __--__. Tôi đã dùng Protect Workbook, đặt Pass cho Sheet. Nhưng khi thực hiện thao tác này, thì khi click nút "NHẬP MỚI" lại bị báo lỗi !$@!!
- Vì vậy, tôi post bài này với hy vọng các bạn có thể xử lý vấn đề giúp tôi. Thanks rất nhiều.
 

File đính kèm

Tôi nghĩ bạn có thể ẩn sheet (siêu ẩn), khi muốn tạo mới bạn cho hiển thị sheet trở lại, ghi dữ liệu vào sau đó tiếp tục ẩn sheet.
 
Thanks hpkhuong, giapphap
Do k biết về siêu ẩn sheet nên tôi dùng code của hpkhuong
Tôi đã thử làm như hướng dẫn nhưng k thành công
Tôi tiếp tục thử, thay đổi vị trí 2 dòng "ActiveSheet.Unprotect "xxx" và "ActiveSheet.Protect "xxx" (như code bên dưới), nhưng vẫn không được. Không biết sai chỗ nào ?
VD : trường hợp tôi sửa code của sheet "12" như sau :

PHP:
Sub ghi_xoa12()
Range("L17:T36").Select
      Selection.Copy
   Sheets("data").Select
   ActiveSheet.Unprotect "QC123"
   Range("E10").Select
    ActiveCell.Offset(Range("F8").Value, 0).Range("a1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
   ActiveSheet.Protect "QC123"
  Sheets("12").Select
Range("P14,p17:p36,r17:R36").Select
        Selection.ClearContents
        
    Range("p17").Select
End Sub

Cụ thể quá trình xảy ra như sau :
1. Nhân viên nhập dữ liệu vào sheet "12" (tức nhập thực đơn bàn 12)
2. Bàn 12 thanh toán tiền xong
3. Có khách mới vào bàn 12
4. Nhân viên bấm nút "nhập mới" trên sheet "12" (để nhập thực đơn mới). Lúc này, Excel tự động unprotect sheet "Data", nhưng k chuyển dữ liệu từ sheet "12" vào sheet "Data". Và Excel hiện thông báo "PasteSpecial method of Range class failed". Nhân viên phải nhấn lựa chọn "end" để tắt thông báo
5. Khi bấm "nhập mới" lần nữa, Excel mới chuyển dữ liệu từ sheet "12" sang sheet "Data", đồng thời Protect sheet "Data"

Như vậy, xảy ra lổ hổng ở bước 4 : excel đã uprotect sheet "Data", và tạo điều kiện cho nhân viên thay đổi dữ liệu đã nhập.
Do trình độ VBA của tôi là số 0 tròn trĩnh, nên tôi chỉ thấy được đến vậy, còn xử lý làm sao thì tôi ...bó tay+-+-+-+
Rất mong các bạn hướng dẫn cụ thể.
PS : tôi không rõ siêu ẩn sheet là ntn. Nhưng tôi có thử phương pháp gán cho sheet "Data" thuộc tính "2-xlSheetVeryHidden" rồi. Kết quả cũng không được. Excel báo k chạy được macro "ghi_xoa12" luôn
 
Lần chỉnh sửa cuối:
Bạn sửa lại dòng
Mã:
[COLOR=#0000BB][FONT=monospace] ActiveSheet[/FONT][/COLOR][COLOR=#007700][FONT=monospace].[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]Unprotect [/FONT][/COLOR][COLOR=#DD0000][FONT=monospace]"QC123"[/FONT][/COLOR]
thành
Mã:
[COLOR=#0000BB][FONT=monospace]Sheets[/FONT][/COLOR][COLOR=#007700][FONT=monospace]([/FONT][/COLOR][COLOR=#DD0000][FONT=monospace]"data"[/FONT][/COLOR][COLOR=#007700][FONT=monospace])[/FONT][/COLOR][COLOR=#007700][FONT=monospace].[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]Unprotect [/FONT][/COLOR][COLOR=#DD0000][FONT=monospace]"QC123"[/FONT][/COLOR]
Nhớ đặt sau dòng
Mã:
[COLOR=#0000BB][FONT=monospace]Sub ghi_xoa12[/FONT][/COLOR][COLOR=#007700][FONT=monospace]()[/FONT][/COLOR]
lệnh này
Mã:
[COLOR=#0000BB][FONT=monospace]Sheets[/FONT][/COLOR][COLOR=#007700][FONT=monospace]([/FONT][/COLOR][COLOR=#DD0000][FONT=monospace]"data"[/FONT][/COLOR][COLOR=#007700][FONT=monospace])[/FONT][/COLOR][COLOR=#007700][FONT=monospace].[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]Protect [/FONT][/COLOR][COLOR=#DD0000][FONT=monospace]"QC123"
[/FONT][/COLOR]
đặt trước End sub
và test thử thế nào.
Còn bạn muốn đặt siêu ẩn cũng thực hiện tương tự, phải cho hiển thị trước khi thao tác, khi thao tác xong sẽ ẩn lại như ban đầu.
Một gợi ý cho bạn thực hiện theo kiểu ẩn sheet.
Mã:
Sub ghi_xoa12()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
Sheet7.Visible = xlSheetVisible
Range("L17:T36").Select
      Selection.Copy
   Sheets("data").Select
   Range("E10").Select
    ActiveCell.Offset(Range("F8").Value, 0).Range("a1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
 
  Sheets("12").Select
Range("P14,p17:p36,r17:R36").Select
        Selection.ClearContents
        
    Range("p17").Select
Sheet7.Visible = xlSheetVeryHidden
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic
End Sub
 
Lần chỉnh sửa cuối:
Thanks giaiphap
Tôi đã thực hiện theo hướng dẫn. Kết quả là CT chạy rất ổn. Một lần nữa cám ơn sự giúp đỡ nhiệt tình của bạn
 
Web KT

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

Back
Top Bottom