Có cách nào để khi save 1 file excel không hiển thị thông báo: "Do you want to...?" (3 người xem)

Liên hệ QC

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

huuhungpc

Thành viên mới
Tham gia
20/10/06
Bài viết
46
Được thích
54
Có cách nào không?

Tôi có viết một đọan code để hiển thị một form khi đóng tập tin. Cụ thể như sau:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
UserForm2.Show
End Sub

Nhưng khi thực hiện thì máy cứ hiện ra bảng thông báo của Excel: Do you want to save the changes you made to .....? và 3 nút Yes, No, Cancel. Tôi xin các bác bác chỉ giáo giúp cho phải bổ sung đọan code trên như thế nào để khi thóat ra Excel tự động Save màkhông còn hiển thị thông báo trên? Mong các bác giúp đỡ, Kiến thức VBA của tôi còn rất i-tờ
 
Bạn để câu này trước Workbook.Close

Mã:
 Application.DisplayAlerts = False

và nhớ chèn vào câu này trước End Sub.

Mã:
Application.DisplayAlerts = True

Mến chào
 
Xin cảm ơn nhiều! nhưng thể là ở đâu. Do tôi kg thấy chữ Workbook.Close
 
Lần chỉnh sửa cuối:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.DisplayAlerts = False
UserForm2.Show
'.......
Application.DisplayAlerts = True
End Sub
 
Á. Mình nói lộn sau câu Private Sub Workbook_BeforeClose(Cancel As Boolean)

Mã:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.DisplayAlerts = False 
UserForm2.Show
Application.DisplayAlerts = True
End Sub
 
Mã:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Application.DisplayAlerts = False
    frmTest.Show
    Application.DisplayAlerts = True
End Sub

Các bạn để ý đoạn code này có hoạt động hay không?

VanHienTB.jpg


hình như nó vẫn hiện có đúng không?
Các bạn thử đoạn code này xem sao?
Mã:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    With Application
        .DisplayAlerts = False
        .ThisWorkbook.Saved = True
        frmTest.Show
        .DisplayAlerts = True
    End With
End Sub
Các bạn có nhận xét gì khi thực hiện đoạn code trên.

Các bạn để ý, trước khi các bạn đóng workbook này, các bạn hãy Save rồi đóng. Chắc có lẻ thông báo sẽ không hiện ra. Vậy thì thuộc tính
Mã:
        .ThisWorkbook.Saved = True
chỉ để đánh lừa mà thôi.
Vậy thử hỏi, đúng ra đoạn với đoạn code không có thuộc tính .Saved=True, tại sao không thực hiện được.

Lê Văn Duyệt
 
digita đã viết:
Cái này thì hồi xửa hối xưa tôi có học qua mà lâu quá không không làm trong lãnh vực tài chính kế toán nên không nhớ cách tính.

Bạn có thề giải thích thêm 1 tí để mình nắm lại phần lý thuyết cơ bản để tìm ra câu trả lời.

Chao ban Digita,
Thoi gian hoan von dau tu toi co the dinh nghia nhu sau: La khoang thoi gian von dau tu ban dau Io duoc hoan tra lai, ca goc lan lai, nho khoang thu duoc hang nam CF.Va co the dung cong thuc sau:
0=[(1+rc)^ATd -1]/[rc*(1+rc)^ATd]
Cong thuc la vay nhung toi khong biet ung dung vao Excel nhu the nao? Neu ban biet chi dum toi nhe.
Con 8%/nam la lai suat vay tin dung.

Thoi gian song cua Du an A,B la 5 nam; va Du an C la 10 nam.
 
Chỉnh sửa lần cuối bởi điều hành viên:
Ủa SG merge bài sao mà ngộ quá. Anh không hiểu. Hi hi hi

Le Van Duyet
 
Nguyên văn bởi levanduyet
Private Sub Workbook_BeforeClose(Cancel As Boolean)
With Application
.DisplayAlerts = False
.ThisWorkbook.Saved = True
frmTest.Show
.DisplayAlerts = True
End With
End Sub​
Theo suy luận, mình nghĩ đoạn code trên có thể viết lại như sau:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
With Application
.ThisWorkbook.Saved = True
frmTest.Show
End With
End Sub​
 
Chào anh Duyệt,

Theo tôi hiểu thì cái Application.Displayalert được gọi qua sự kiện (event driven by action) tức là phải làm cái gì đó (TD activeworkbook.save v. v.) nó mới chạy.

Câu Application.ThisWorkbook.Saved = True chỉ nói lên thuộc tính của file có được save hay chưa. Câu này dùng trong boolean test (IF - true/false). Vì vậy khi dùng câu này (ThisWorkbook.Saved = True) nó vẩn cho hiển thị câu hõi muốn save hay không. Ví thế code dưới đây mới "ém nhẹm" cái câu hói muốn save hay không

Mã:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
With Application
        .DisplayAlerts = False
         ActiveWorkbook.Save
        .DisplayAlerts = True
End With
End Sub

Thân mến
 
Sao các bác lại phức tạp cho thêm thằng DisplayAlerts vào làm gì nhỉ ??

Đề bài là :
1. Không cho thằng Do U want . . hiện hồn
2. Cho Form phi ra

Câu 2 thì dễ rồi. Vậy chỉ còn câu 1.

Bác Bill nhà ta đã mất mấy năm trời vắt chân lên trán để cho ra cái cơ chế là : Nếu như có bất cứ sự thay đổi nào so với lần lưu lại gần nhất thì bác sẽ cho thằng Do U want . . . hiện ra. Mục đích vì an toàn của dữ liệu thôi.

Vậy ta có thể làm theo các cách sau :

1. Thay đổi cơ chế này : Cái này em không làm được, và cũng không nên làm

2. Thoát luôn mà không lưu lại :bạn huuhungpc khóc ròng luôn

3. Trước khi thoát (BeforeClose) cho lưu lại : Khi đó kể từ thời điểm lưu lại này cho đến hiện tại thì không có gì thay đổi. vậy hà cớ gì thằng quỷ DO U want . . hiện ra làm gì.

Vậy thì ta có thể dùng 1 trong 2 thủ tục này :

1. ThisWorkbook.Close (True)
2. ThisWorkbook.Save


Thân!
 
Web KT

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

Back
Top Bottom