-
RE: Gọi thực hiện 1 Private Sub trên Form này từ Form khác.
Minh Tiên > 25-01-14, 04:54 PM
Cảm ơn XT và MTNQ nhiều !
Mình cũng đã thực hiện theo "Hướng dẫn" của XT chuyển sang sử dụng Function trong ClassModule, khi gọi khỏi phải bận tâm sẽ có sự xung đột. Tuy nhiên cách này cần phải nhớ các Object để quản lý(Obj ko đc hỗ trợ như trong frm hoặc rpt) .
Thanks ! -
RE: Gọi thực hiện 1 Private Sub trên Form này từ Form khác.
DooHoaangPhuuc > 15-10-20, 09:58 PM
Cháu xin hỏi code VBA cho gọi hàm Call từ nút lệnh CmdA (trên FormA) để gọi thực hiện nút lệnh CmdB (trên FormB)
Code VBA bên dưới lỗi (lỗi tại hàm Call):
Private Sub CmdA_Click()
DoCmd.OpenForm "FormB"
Call Forms.FormB.CmdB_Click ()
End Sub
Hoặc code VBA này cũng lỗi :
Private Sub CmdA_Click()
DoCmd.OpenForm "FormB"
Call Forms.("FormB").CmdB_Click ()
End Sub
Cháu chưa biết sửa như thế nào. Cháu xin nhờ giúp đỡ.
Cháu xin cảm ơn
DooHoaangPhuuc -
RE: Gọi thực hiện 1 Private Sub trên Form này từ Form khác.
ongke0711 > 15-10-20, 10:38 PM
Đổi Private Sub thành Public Sub. -
RE: Gọi thực hiện 1 Private Sub trên Form này từ Form khác.
tranthanhan1962 > 15-10-20, 11:21 PM
Bản thân lệnh đã ghi rõ public (công cộng), private (riêng tư). Vì vậy cũng không nên đòi hỏi điều quá đáng. Có bạn nào muốn bà xã là public không nào. Tuy nhiên vẫn có một cách xử dụng đồ của người ta đó là "ăn trộm". Thường thì tôi sẽ xử lý như thế này.
Ví dụ có 2 form A và B. Trên form A có các nút navigation giả sử tôi muốn dùng lệnh của nút lệnh First_Record_Click
Private Sub First_Record_Click()
DoCmd.GoToRecord , , acFirst
End Sub
Trên form B tôi sẽ tạo một nút lệnh có khả năng First Record cho form A là First_Record_A. Tôi sẽ sử dụng code như sau:
Private Sub First_Record_ A_Click()
Form_A.SetFocus (Nhập nha)
DoCmd.GoToRecord , , acFirst (ăn trộm)
Me.SetFocus (Về nhà)
End Sub
Với phương pháp này gần như xử lý tất cả các code lệnh riêng tư của form từ một form khác rất đễ dàng mà không lo bị lỗi. -
RE: Gọi thực hiện 1 Private Sub trên Form này từ Form khác.
DooHoaangPhuuc > 17-10-20, 10:12 PM
Cháu xin cảm ơn sự hỗ trợ từ Các Bác , các Chú.
Trước đây cháu cũng đã sử dụng Call để gọi thực hiện lệnh Call từ Form này cho đối tượng trên Form khác cũng theo Code VBA (không cần thiết khai báo Public thay Private) mà vẫn thực hiện bình thường
Private Sub CmdA_Click()
DoCmd.OpenForm "FormB"
Call Forms.FormB.CmdB_Click ()
End Sub
Nhưng nay, do yêu cầu phải đưa thêm Call vào để thực hiện một số bước, thì phát sinh lỗi chính dòng "Call Forms.FormB.CmdB_Click ()".
Cháu tìm mãi mà không biết lỗi phát sinh từ đâu, cả trên 2 tập tin cháu đã cập nhật đường link trên đây.
Cả 2 tập tin này có cấu trúc y như nhau, nhưng 1 bản lỗi và bản kia bình thường hoạt động tốt.
Đây là tập tin bị lỗi khi thực hiện gọi thủ tục Call
https://www.fshare.vn/file/1HY4EGQ3YCIB
Đây là tập tin hoạt động tốt khi thực hiện gọi thủ tục Call
https://www.fshare.vn/file/RZEP3ZICTUHM
Các Bác, các Chú giúp xem qua , chỉ dẫn cháu sự khác biệt như thế nào đã dẫn đến việc phát sinh lỗi như hình tải phía trên.
Cháu xin cảm ơn.
DooHoaangPhuuc -
RE: Gọi thực hiện 1 Private Sub trên Form này từ Form khác.
ongke0711 > 17-10-20, 11:09 PM
(17-10-20, 10:12 PM)DooHoaangPhuuc Đã viết: Nhưng nay, do yêu cầu phải đưa thêm Call vào để thực hiện một số bước, thì phát sinh lỗi chính dòng "Call Forms.FormB.CmdB_Click ()".
Cháu tìm mãi mà không biết lỗi phát sinh từ đâu, cả trên 2 tập tin cháu đã cập nhật đường link trên đây.
Cả 2 tập tin này có cấu trúc y như nhau, nhưng 1 bản lỗi và bản kia bình thường hoạt động tốt.
Rõ ràng tập tin OK của bạn đang khai báo:
Public Sub CmdB_Click()
(Ps: bạn nên dùng dịch vụ upload file nào để người khác có thể download nhanh chứ fshare này nếu tôi không có tài khoản phải chờ 60s, không được qua trang khác mới download được. Nó khá phiền phức.)