Don có xu hướng làm việc trên hai màn hình và mở nhiều sổ làm việc trên cùng một phiên bản Excel. Anh ấy cũng mở rộng tối đa cửa sổ của mình. (Anh ấy tự mô tả mình là kiểu người “xem mọi thứ trong một lần”.) Gần đây, khi Don làm điều gì đó mở hộp thoại phương thức, hộp sẽ mở ra phía sau sổ làm việc, điều này khiến anh ấy không thể nhìn thấy hộp thoại hoặc tương tác với nó. Anh ta tự hỏi liệu có cách nào anh ta có thể làm cho hộp thoại phương thức xuất hiện trước sổ làm việc không.

Trước khi trả lời, cần chỉ ra rằng các hộp thoại có thể có hai loại: modal và modeless. Hộp thoại không có mô hình là một hộp thoại hầu như không phụ thuộc vào chương trình mà nó thuộc về. Một ví dụ điển hình về hộp thoại như vậy là hộp thoại Tìm và Thay thế. Mặt khác, hộp thoại phương thức (hộp thoại mà Don đang gặp vấn đề)

phải được phản hồi hoặc đóng trước khi bạn có thể tiếp tục làm việc với chương trình chứa hộp thoại.

Không rõ vấn đề của Don là với các hộp thoại phương thức do chính Excel tạo ra hay chúng là các hộp thoại được tạo bởi các macro mà Don có quyền kiểm soát. Nếu nó là trước đây, thì có rất ít điều có thể được thực hiện; vị trí phân lớp của hộp thoại được kiểm soát hoàn toàn bởi chương trình (và những người lập trình đã tạo ra nó). Nói cách khác, sẽ cần một sự thay đổi mã để làm cho hộp thoại xuất hiện nhiều lớp trên đầu sổ làm việc thay vì dưới nó.

Hiểu rằng có một tình huống mà sự cố có thể không phải do sự cố lập trình Excel. Có thể là bạn có ứng dụng của bên thứ ba đang chạy trên hệ thống, điều này ảnh hưởng đến việc phân lớp các hộp thoại và cửa sổ mẹ của chúng. Thủ phạm điển hình trong trường hợp này là các tiện ích cư trú trong bộ nhớ buộc chúng phải luôn xuất hiện trên bất kỳ thứ gì khác trên màn hình. Cách duy nhất để xem liệu đây có phải là thủ phạm hay không là vô hiệu hóa việc tải các tiện ích đó và trong Excel, hiển thị hộp thoại phương thức. Nếu hành vi trở lại bình thường, thì bạn biết nguồn gốc của vấn đề.

Tuy nhiên, nếu trường hợp hộp thoại được tạo bởi macro Don đã phát triển thì giải pháp là điều chỉnh mã tạo hộp thoại phương thức. (Trong macro Excel, các loại hộp thoại này thường được triển khai thông qua biểu mẫu người dùng.).

Vấn đề với vị trí biểu mẫu người dùng trong nhiều trường hợp màn hình được khắc phục bằng cách đặt thủ công biểu mẫu người dùng trong mã khởi tạo của nó. Ví dụ: bạn có thể sử dụng một số biến thể trên này:

Load UserForm1 UserForm1.StartUpPosition = 0 UserForm1.Top = Application.Top + 25 UserForm1.Left = Application.Left + 25 UserForm1.Show

Bạn có thể cần phải thử nghiệm với vị trí nhưng đặt thuộc tính StartUpPosition thành 0 là bắt buộc để VBA biết bạn muốn định vị biểu mẫu người dùng theo cách thủ công.

_Lưu ý: _

Nếu bạn muốn biết cách sử dụng các macro được mô tả trên trang này (hoặc trên bất kỳ trang nào khác trên trang ExcelTips), tôi đã chuẩn bị một trang đặc biệt bao gồm thông tin hữu ích.

ExcelTips là nguồn của bạn để đào tạo Microsoft Excel hiệu quả về chi phí.

Mẹo này (13349) áp dụng cho Microsoft Excel 2007, 2010, 2013, 2016, 2019 và Excel trong Office 365.