Trong bài viết này chúng ta tìm hiểu về 1 vấn đề khá thường gặp phải khi thiết kế Userform trong lập trình VBA: đó là việc Userform có nhiều đối tượng như Label, Textbox, Combobox, CommandButton… làm thế nào để có thể khi bấm phím tab sẽ tự động nhảy theo thứ tự các đối tượng đúng như mong muốn? Hãy cùng tìm hiểu cách làm này nhé:
Xem nhanh
Để thực hiện theo bài viết này, tôi đã chuẩn bị sẵn 1 file Excel trong đó đã có 1 userform như sau:
Trong Userform này có chứa các đối tượng:
Khi thiết kế Userform này chúng ta khó có thể xác định ngay được vị trí và thứ tự các đối tượng. Do đó thứ tự tạo các đối tượng này cũng không tuần tự ngay mà khá lộn xộn.
Trong hình trên khi mở Userform lên chúng ta thấy vị trí của nút Close đang được chọn.
Vậy làm thế nào để thiết lập mỗi khi mở Userform lên sẽ chọn tới đối tượng chúng ta mong muốn (ví dụ chọn ngay tới Textbox nhập Date) và khi bấm tab sẽ nhảy tuần tự tới các đối tượng theo thiết kế của Userform?
Khi chọn mỗi đối tượng trong Userform, chúng ta sẽ chú ý vào cửa sổ Properties, mục TabIndex:
Mỗi đối tượng đều có tabindex được tự động đánh số theo thứ tự đối tượng đó được khởi tạo. TabIndex có đặc điểm:
Do đó để có thể đặt TabIndex theo đúng thứ tự mà chúng ta mong muốn thì chúng ta sẽ đặt lại TabIndex cho từng đối tượng trong userform. Ví dụ như sau:
Bắt đầu từ textbox nhập Ngày (txDate) sẽ chọn TabIndex là 0
Tiếp theo khi nhảy tab muốn nhảy tới combobox nhập Sale (cbSale) chọn TabIndex cho cbSale là 1
Tương tự như vậy cho các đối tượng khác sẽ đặt như sau:
Bây giờ thử mở Userform lên và thực hiện bấm tab để nhảy qua các đối tượng xem kết quả thế nào nhé.
Tải về file mẫu tại địa chỉ: http://bit.ly/2sKcdhz
Xem thêm: Hướng dẫn cách vô hiệu hóa nút x close của userform VBA Excel
Để tìm hiểu thêm nhiều kiến thức về VBA, mời bạn tham dự khóa học VBA101 – Tự động hóa Excel với lập trình VBA. Đây là khóa học rất hữu ích dành cho bạn, giúp bạn hiểu một cách bài bản về VBA và cách sử dụng VBA, ứng dụng VBA vào công việc để tăng hiệu quả. Hãy cùng khám phá nào: