Hướng dẫn cách thiết lập để nhảy tab đúng đối tượng trong Userform VBA Excel

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é:

1. Chuẩn bị

Để 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:

  • 4 label tương ứng là Date, Sale, Amount, Other
  • 3 Textbox để nhập giá trị cho các mục Date, Amount, Other
  • 1 Combobox để chọn đối tượng Sale theo danh sách
  • 2 Command Button để thực hiện các lệnh OK, Close cho userform.

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?

2. Thiết lập TabIndex trong các đối tượng 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:

  • Bắt đầu từ số 0
  • Tăng dần theo thứ tự đối tượng được khởi tạo (mặc định ban đầu)
  • Liên tục và không trùng nhau giữa các đối tượng
  • Khi thay đổi TabIndex của 1 đối tượng cũng có thể đồng thời thay đổi TabIndex của đối tượng khác để đảm bảo nguyên tắc không trùng nhau.

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:


Tác giả: duongquan211287

· · ·

Khóa học mới xuất bản