Sử dụng double click VBA Excel

Deal Score0
Deal Score0

Sử dụng UserForm trong VBA sẽ giúp bạn tạo một ứng dụng đúng nghĩa. Với giao diện, các sự kiện và lệnh được liên kết với đối tượng trong UserForm VBA, bạn có thể tạo được một ứng dụng có giao diện thực hiện theo các yêu cầu được lập trình. Bài viết sau đây sẽ hướng dẫn bạn đọc cách mở userform bằng thao tác double click VBA Excel.

1. Chuẩn bị sẵn userform

Việc đầu tiên là bạn cần chuẩn bị sẵn userfom. 

Ví dụ bạn có 1 bảng dữ liệu và 1 userform tương ứng như sau:

Sử dụng double click VBA Excel

Mục đích của chúng ta là khi double click vào 1 dòng bất kỳ trong bảng dữ liệu (trừ dòng tiêu đề) thì sẽ mở userform1 lên, và dữ liệu tại vị trí dòng double click đó sẽ được tự động lấy vào vị trí các textbox tương ứng trong userform.

Hãy cùng tìm hiểu cách làm ở những phần sau đây nhé. 

2. Viết lệnh lấy dữ liệu vào Userform

Trong VBA có 1 đối tượng là ActiveCell. Đối tượng này được hiểu là vị trí đang được người dùng chọn, tác động.

Theo logic chúng ta sẽ có là:

  • Textbox Ngày sẽ lấy dữ liệu theo cột Ngày (cột A), dòng là tại vị trí  dòng của ActiveCell
  • Textbox Loại sẽ lấy dữ liệu theo cột Loại (cột B), dòng là tại vị trí  dòng của ActiveCell
  • Textbox Tên mặt hàng sẽ lấy dữ liệu theo cột Tên mặt hàng (cột C), dòng là tại vị trí  dòng của ActiveCell
  • Textbox Số lượng sẽ lấy dữ liệu theo cột Số lượng (cột D), dòng là tại vị trí  dòng của ActiveCell

Bây giờ sẽ không xét vị trí cột của ActiveCell, vì cột luôn xác định được cụ thể, trong khi ActiveCell có thể là vị trí bất kỳ, chỉ có dòng là giống nhau giữa các vị trí.

Logic trên được biểu diễn bằng câu lệnh VBA như sau:

Sử dụng double click VBA Excel

3. Tạo sự kiện khi sử dụng double click trong sheet

a. Phân tích yêu cầu và tính logic

Trong đối tượng worksheet có rất nhiều sự kiện, một trong số đó là sự kiện Before DoubleClick. DoubleClick nghĩa là trước khi hoàn thành thao tác double click trong Sheet thì Excel sẽ chạy 1 vài câu lệnh macro để khi hoàn tất thao tác double click thì cũng hoàn thành câu lệnh macro đó. Kết quả là khi double click chuột thì những điều bạn mong muốn sẽ được thực  hiện một cách tự động.

Ở đây, chúng ta sẽ gán macro Mở userform (Userform1.Show) vào sự kiện này.

Tuy nhiên có 1 lưu ý mà bạn cần phải nắm được đó là: Chỉ double click trong phạm vi bảng dữ  liệu thì mới mở userform, còn ngoài phạm vi này (bao gồm cả dòng tiêu đề) thì sẽ không mở userform.

Với yêu cầu trên thì chúng ta phải có 1 câu lệnh để biện luận xem phạm vi bảng tính tới đâu.

  • Số cột: Từ cột A tới cột D
  • Số dòng: bắt đầu từ dòng 2, kết thúc  tới dòng cuối cùng  có dữ liệu trong bảng

Như vậy ở đây chúng ta phải xét tới 1 biến là biến dòng cuối của bảng là dòng nào.

b. Lệnh tìm dòng cuối trong bảng dữ liệu

Lệnh tìm dòng cuối là câu lệnh đặc trưng và rất thường sử dụng trong lập trình VBA. Câu lệnh như sau:

Sheet_Name.Cells(Rows.Count, Column_Num).End(xlUp).Row

  • Sheet_name: vùng bảng đó nằm ở Sheet nào (thay đổi tên Sheet)
  • Rows.count: đếm các dòng chứa giá trị
  • Column_num: xét trong cột nào (thay đổi vị trí cột)
  • End(xlUp).Row: xét từ  dòng cuối cùng trong sheet, tính ngược dần tới vị trí  dòng cuối có dữ liệu.

Như vậy viết câu lệnh  tìm dòng  cuối trong trường hợp này có thể viết như sau:

Sử dụng double click VBA Excel

Xét dòng cuối tại Sheet1, cột A

c. Lệnh gọi userform trong vùng bảng dữ liệu

Câu lệnh giới hạn như sau:

Sử dụng double click VBA Excel

Câu lệnh nghĩa là:

  • If not : nếu không phải (xét cả câu lệnh thì là: nếu không phải dữ liệu trong vùng được chọn từ A2 tới dòng cuối cột D là không có gì => Phủ định  của phủ định => Hiểu ngược lại là nếu có tác động vào vùng A2 tới dòng cuối cột D)
  • Intersect(Range(“A2”, “D” & DongCuoi), Range(Target.Address)): giao nhau, giao giữa vùng A2:D&DongCuoi với vùng được chọn Target.Address. Câu này hiểu là chọn vào vùng A2:D&Dongcuoi
  • Is Nothing: là 1 mệnh đề phủ định. Kết hợp với IF not ở trên để hoàn thành 1 mệnh đề phủ định của phủ định.
  • Userform1.Show là câu lệnh gọi ra Userform1. Khi gọi ra Userform1 thì tương ứng với đó vị trí được double click chính là Activecell.

Như vậy bài viết trên đã hướng dẫn bạn đọc cách mở userform bằng thao tác double click VBA Excel. Hi vọng bài viết sẽ có ích cho các bạn trong việc thành thạo các thủ thuật của Excel

 

We will be happy to hear your thoughts

Leave a reply

Phần mềm FREE