Nếu thiếu SHEET quan trọng thì sẽ không thoát khỏi Excel được!

Thảo luận trong 'Ứng dụng Excel' bắt đầu bởi quynh3684, 27 Tháng chín 2006.

5,223 lượt xem

  1. quynh3684

    quynh3684 Thành viên sơ cấp

    Bài viết:
    11
    Đã được thích:
    0
    Nơi ở:
    Hà Nôị
    Các bác giỏi Excel có thể giúp em vấn đề này được không?

    Trong một cơ sở dữ liệu của em có sheet danh sách khách hàng rất quan trọng, tính em cẩn thận, sợ người khác vô tình xóa mất thì hỏng ăn nên em muốn các bác giúp có cách nào mà khi người ta vô tình xóa sheet đó thì Excel sẽ không chấp nhận ghi hoặc khi thoát ra thì sẽ ở chế không ghi không ạ? Không bít đã rõ ràng chưa nhỉ?
    Các bác có thể cho rằng Sheet DSKH quan trọng như thế thì sao lưu ra chục bản là xong nếu mất thì cập nhật lại vô tư, nhưng Cty em danh sách khách hàng thay đổi (chủ yếu là cập nhật thêm) hàng giờ nên em không thể làm việc đó được, vậy các bác cố giúp em nhé, thank các bác nhìu lắm.
     
    #1
  2. hoanghuytu

    hoanghuytu Thành viên thân thiết

    Bài viết:
    562
    Đã được thích:
    12
    Nơi ở:
    Thanh Hóa
    Bạn có thể đặt cho mình một hệ điều hành riêng, những người khác vào thì sẽ không thể thay đổi nội dung hay xóa đi được. Hoặc bạn cũng có thể vào Tools --> Options --> Protects cho toàn bộ sheet cũng được.
     
    #2
  3. 123HP

    123HP Thành viên sơ cấp

    Bài viết:
    4
    Đã được thích:
    0
    Nơi ở:
    Hải Phòng
    Cách đơn giản nhất là bạn đặt password cho sheet đó:
    - Tools/protection/protect sheet (người sử dụng sẽ không xóa hay sửa được nội dung của sheet)
    - Tools/protection/protect workbook (người sử dụng sẽ không xóa, copy ... được sheet)
     
    #3
  4. eureka

    eureka Thành viên sơ cấp

    Bài viết:
    8
    Đã được thích:
    0
    Nơi ở:
    HN
    Cách của 123HP thì đúng rồi nhưng mình bổ sung thêm một chút. Đó là trước khi vào Tools/Protection thì vào Format/Cells/Protection và bỏ dấu tích ở Locked đi.
     
    #4
  5. quynh3684

    quynh3684 Thành viên sơ cấp

    Bài viết:
    11
    Đã được thích:
    0
    Nơi ở:
    Hà Nôị
    Cám ơn các bác đã giúp đỡ nhưng cách của các bác vẫn xóa sheet vô tư và vẫn thoát ra ghi bình thường, không tin các bác thử xem.
    Chẳng lẽ em viết thế mà các bác không hiểu ý em à, bác nào cao thủ giúp đi, hình như bằng một con mác cờ rô thì phải.
     
    #5
  6. darkmoon

    darkmoon Tiền và tiền $$$

    Bài viết:
    404
    Đã được thích:
    8
    Nơi ở:
    HCM
    Bạn phải hình dung thế này :
    + Nếu protect sheet thì sẽ không cho ghi vào sheet đó, chỉ khi nào unprotect sheet thì mới ghi được.
    + Protect workbook là không cho chèn thêm, xóa, copy, move... worksheet.
    Với câu hỏi của bạn thì bạn phải đồng thời protect workbook và protect sheet bạn muốn bảo vệ (đương nhiên là bạn phải đặt password).
    Chúc bạn tìm được câu trả lời.
     
    #6
  7. quynh3684

    quynh3684 Thành viên sơ cấp

    Bài viết:
    11
    Đã được thích:
    0
    Nơi ở:
    Hà Nôị
    Mấu chốt vấn đề là thế này:
    Một macro sẽ chạy khi thoát excel
    Macro đó sẽ tìm kiếm Sheet DSKH, nếu tồn tại sheeet này thì save lại và cho thoát, còn không có thì thoát excel mà không ghi gì cả, hoặc khi người sử dụng nhấn CTRL+S để ghi tài liệu thì chạy một macro kiểm tra sheet DSKH xem có tồn tại không, nếu tồn tại thì cho ghi và nếu không tồn tại thì thoát ra không ghi.
    Em hiểu nguyên lý có thể sẽ như thế, các bác giỏi lập trình giúp em với,
    Bảo vệ Workbook và bảo vệ Sheet không giải quyết được vấn đề như trên các bác ạ.
     
    #7
  8. ruadangyeu

    ruadangyeu Thành viên hoạt động

    Bài viết:
    143
    Đã được thích:
    2
    Nơi ở:
    Hanoi
    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Dim kiemtra As Boolean
    For i = 1 To Worksheets.Count - 1
    If Worksheets(i).Name = "dskh" Then
    kiemtra = True
    End If
    Next
    If kiemtra = False Then
    SaveAsUI = False
    Cancel = True
    rua = MsgBox("BAN KHONG DUOC DOI TEN SHEET DSKH", vbOKOnly)
    End If
    End Sub

    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Dim kiemtra As Boolean
    For i = 1 To Worksheets.Count - 1
    If Worksheets(i).Name = "dskh" Then
    kiemtra = True
    End If
    Next
    If kiemtra = False Then
    da = MsgBox("Ban phai doi lai ten cho danh sheet DSKH", vbOKOnly, "Canh bao")
    End If

    End Sub
    Bạn thử cho 2 thủ tục này vào là được ngay
    - Thủ tục1 kiểm tra nếu không tồn tại sheet có tên là "dskh" nó sẽ không cho ghi lại sự thay đổi
    - Thủ tục2 chạy khi có sự thay đổi trong worksheet nếu kô co sheet tên là "dskh" nó sẽ thông báo
    Có gì liên hệ với mình thanggaynguyen@gmail.com
     
    #8
  9. quynh3684

    quynh3684 Thành viên sơ cấp

    Bài viết:
    11
    Đã được thích:
    0
    Nơi ở:
    Hà Nôị

    Cám ơn bạn Rùa, bạn đã giúp mình đúng hướng nhưng mình chạy mãi mà không được, bạn chạy thử xem mình nói đúng không, Thank bạn một lần nữa nhé. (BẠN THỬ KIỂM TRA LẠI MÃ XEM)
     
    #9
  10. ruadangyeu

    ruadangyeu Thành viên hoạt động

    Bài viết:
    143
    Đã được thích:
    2
    Nơi ở:
    Hanoi
    Mình chạy thử rồi mà, ok đấy chứ
    Bạn thử lại coi Đánh đúng như mình đấy.
    nếu cần mình gửi file cho
     
    #10
  11. ruadangyeu

    ruadangyeu Thành viên hoạt động

    Bài viết:
    143
    Đã được thích:
    2
    Nơi ở:
    Hanoi
  12. quynh3684

    quynh3684 Thành viên sơ cấp

    Bài viết:
    11
    Đã được thích:
    0
    Nơi ở:
    Hà Nôị
    Em phải cảm ơn bác thế nào đây ạ, quá chuẩn rồi, hôm trước e làm không được là do em để dạng chữ hoa nên chắc máy không nhận ra nên cứ báo lỗi hoài, một lần nữa cám ơn bác nhé.
     
    #12
  13. ruadangyeu

    ruadangyeu Thành viên hoạt động

    Bài viết:
    143
    Đã được thích:
    2
    Nơi ở:
    Hanoi
    Chỉ là chuyện nhỏ thôi mà có gì mà phải cảm ơn.
    Mình giúp bạn người khác lại giúp mình.
     
    #13
  14. Xluan

    Xluan Thành viên sơ cấp

    Bài viết:
    1
    Đã được thích:
    0
    Nơi ở:
    hcm
    đưa 2 thủ tục đó vô file thế nào nhỉ? mình thấy chủ đề rất hay, muốn download file về dùng thử nhưng link hỏng rồi.
     
    #14
  15. phuyen89

    phuyen89 Thành viên thân thiết

    Bài viết:
    335
    Đã được thích:
    7
    Nơi ở:
    Tuy Hoà-Phú Yên
    #15
  16. phuyen89

    phuyen89 Thành viên thân thiết

    Bài viết:
    335
    Đã được thích:
    7
    Nơi ở:
    Tuy Hoà-Phú Yên
    Thì Copy cái Code trên, mở Excel lên, nhấn Alt + F11 rồi Insert Modul, paste vào thôi.
     
    #16

Chia sẻ trang này