huuthang_bd
Chuyên gia GPE

Trong quá trình tìm hiểu và áp dụng Class module mình gặp phải vấn đề khó hiểu như tiêu đề mình đã nêu: Class bị "vỡ" khi dùng trên file có Macro nhưng không được kích hoạt, làm thế nào để khắc phục hiện tượng này?
Hiện tượng này mình gặp phải trên Excel 2007. Mình xin mô tả lại hiện tượng như thế này.
Mình có 1 file Add in tên là Main.xla và một file có chứa macro tên là Test.xls (được đính kèm theo bài viết)
Đầu tiên mình mở file Main.xla và kích hoạt Macro cho file này, lúc này sẽ xuất hiện thêm tab Add-Ins trên hệ thống Ribbon, ở đó có một nút lệnh để thí nghiệm.
Trường hợp 1: Mở file Test.xls và kích hoạt macro, thử thay đổi vùng chọn sẽ thấy xuất hiện hộp thông báo với nội dung "GPE" (điều này có nghĩa là Class đang hoạt động tốt). Bây giờ mình click vào nút lệnh mới trên tab Add-Ins sẽ xuất hiện UserForm1, click vào nút lệnh Insert Sheet trên UserForm này sẽ thêm 1 Sheet trên file hiện hành. Đóng UserForm và thử thay đổi vùng chọn thì thấy vẫn còn xuất hiện thông báo "GPE" tức là Class vẫn hoạt động bình thường.
Bây giờ mình đóng file Test.xls để thử trường hợp 2.
Trường hợp 2: Mở file Test.xls nhưng không kích hoạt macro, thử thay đổi vùng chọn sẽ thấy xuất hiện hộp thông báo với nội dung "GPE" (điều này có nghĩa là Class đang hoạt động tốt). Bây giờ mình click vào nút lệnh mới trên tab Add-Ins sẽ xuất hiện UserForm1, click vào nút lệnh Insert Sheet trên UserForm này sẽ thêm 1 Sheet trên file hiện hành nhưng đồng thời UserForm1 cũng biến mất. Bây giờ thay đổi vùng chọn thì không còn xuất hiện hộp thông báo nữa, Class đã bị vỡ.
Một điều lạ là nếu không kích hoạt macro nhưng sau khi mở file có macro mình mở cửa sổ VBE sau đó quay lại bảng tính để thực hiện thì Class lại không bị.
Bây giờ mình đóng file Test.xls để thử trường hợp 3.
Trường hợp 3: Mở file Test.xls nhưng không kích hoạt macro, nhấn Alt + F11 để mở cửa sổ VBE rồi nhấn Alt + q để đóng cửa sổ VBE quay lại trang tính. Bây giờ mình click vào nút lệnh mới trên tab Add-Ins sẽ xuất hiện UserForm1, click vào nút lệnh Insert Sheet trên UserForm này sẽ thêm 1 Sheet trên file hiện hành. Đóng UserForm và thử thay đổi vùng chọn thì thấy vẫn còn xuất hiện thông báo "GPE" tức là Class vẫn hoạt động bình thường.
Anh, chị, bạn nào biết cách khắc phục vui lòng hướng dẫn giúp.
Xin chân thành cảm ơn.
Hiện tượng này mình gặp phải trên Excel 2007. Mình xin mô tả lại hiện tượng như thế này.
Mình có 1 file Add in tên là Main.xla và một file có chứa macro tên là Test.xls (được đính kèm theo bài viết)
Đầu tiên mình mở file Main.xla và kích hoạt Macro cho file này, lúc này sẽ xuất hiện thêm tab Add-Ins trên hệ thống Ribbon, ở đó có một nút lệnh để thí nghiệm.
Trường hợp 1: Mở file Test.xls và kích hoạt macro, thử thay đổi vùng chọn sẽ thấy xuất hiện hộp thông báo với nội dung "GPE" (điều này có nghĩa là Class đang hoạt động tốt). Bây giờ mình click vào nút lệnh mới trên tab Add-Ins sẽ xuất hiện UserForm1, click vào nút lệnh Insert Sheet trên UserForm này sẽ thêm 1 Sheet trên file hiện hành. Đóng UserForm và thử thay đổi vùng chọn thì thấy vẫn còn xuất hiện thông báo "GPE" tức là Class vẫn hoạt động bình thường.
Bây giờ mình đóng file Test.xls để thử trường hợp 2.
Trường hợp 2: Mở file Test.xls nhưng không kích hoạt macro, thử thay đổi vùng chọn sẽ thấy xuất hiện hộp thông báo với nội dung "GPE" (điều này có nghĩa là Class đang hoạt động tốt). Bây giờ mình click vào nút lệnh mới trên tab Add-Ins sẽ xuất hiện UserForm1, click vào nút lệnh Insert Sheet trên UserForm này sẽ thêm 1 Sheet trên file hiện hành nhưng đồng thời UserForm1 cũng biến mất. Bây giờ thay đổi vùng chọn thì không còn xuất hiện hộp thông báo nữa, Class đã bị vỡ.
Một điều lạ là nếu không kích hoạt macro nhưng sau khi mở file có macro mình mở cửa sổ VBE sau đó quay lại bảng tính để thực hiện thì Class lại không bị.
Bây giờ mình đóng file Test.xls để thử trường hợp 3.
Trường hợp 3: Mở file Test.xls nhưng không kích hoạt macro, nhấn Alt + F11 để mở cửa sổ VBE rồi nhấn Alt + q để đóng cửa sổ VBE quay lại trang tính. Bây giờ mình click vào nút lệnh mới trên tab Add-Ins sẽ xuất hiện UserForm1, click vào nút lệnh Insert Sheet trên UserForm này sẽ thêm 1 Sheet trên file hiện hành. Đóng UserForm và thử thay đổi vùng chọn thì thấy vẫn còn xuất hiện thông báo "GPE" tức là Class vẫn hoạt động bình thường.
Anh, chị, bạn nào biết cách khắc phục vui lòng hướng dẫn giúp.
Xin chân thành cảm ơn.