Monday, October 1, 2018

Code Vba Thông Dụng Trong Excel - Bài 4

Chào các bạn, Hôm trước trong bài thứ 3 mình đã giới thiệu về code xóa hàng loạt. Các code này rất hữu ích. Vì hiện nay đa phần các bạn dùng thủ công để thực hiện các thao tác, việc này rất tốn thời gian và hiệu suất công việc kém. Hôm nay mình xin giới thiệu đến các bạn code tạo Data Validation để chọn.

Hiện nay, khi các bạn tạo Data Validation để chọn theo list, nếu trong vùng dữ liệu đó có nhiều dữ liệu trùng nhau, hoặc bạn chọn một vùng dài, nhưng trong vùng đó có một khoảng trống các dòng thì khi Data Validation được tạo ra. Vùng dữ liệu trùng sẽ bị lặp lại và có khoảng trống trong list chọn, việc này làm cho list chọn của chúng ta bị rối và nhìn thật không thẩm mỹ chút nào. Vì vậy mình xin giới thiệu đến các bạn đoạn code sau, đoạn code này sẽ loại bỏ đi các yêu tố vướng mắc mà các bạn cần.

+ Đoạn code như sau:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Dim arr, Item, dic As Object, Tmp As String
  On Error Resume Next
  If Not Intersect(([F2]), Target) Is Nothing Then
    If Target.Count = 1 Then
      arr = Sheet1.Range("AC4:AC1003").Value
      Set dic = CreateObject("Scripting.Dictionary")
      For Each Item In arr
        Tmp = CStr(Item)
        If Len(Tmp) Then
          If Not dic.exists(Tmp) Then dic.Add Tmp, ""
        End If
      Next
      With Target.Validation
        .Delete
        If dic.Count Then .Add 3, , , Join(dic.Keys, ",")
      End With
    End If
  End If
End Sub

- Mình sẽ giới thiệu từng phần trong đoạn code này như sau:
1. If Not Intersect(([F2]), Target) Is Nothing Then: Tại ô F2, đây là ô mình đặt List Data Validation, ô này nằm trong sheet các bạn đang đặt code này vào, nếu các bạn muốn để List chỗ ô nào, thì có thể thay đổi lại địa chỉ ô này cho đúng theo nhu cầu thực tế của mình.
2. arr = Sheet1.Range("AC4:AC1003").Value: Đây là vùng chứa dữ liệu sẽ được nằm trong List các bạn sẽ chọn khi tạo Data Validation. Nếu dữ liệu nằm trong sheet nào thì các bạn thay đổi lại thứ tự sheet cho hợp lý. Sheet1 thành..2.3...Đối với vùng Range("AC4:AC1003"). Đây là vùng nằm trong sheet 1 chứa dữ liệu mà bạn muốn chọn để tạo thành list. Nếu vùng của bạn là vùng nào, thì bạn có thể thay đổi theo thực tế mình cần.
+ Để biết sheet có chứa dữ liệu là sheet nào, các bạn bấm ALT + F11 và xem bên trái phần VbaProject. Nó sẽ hiện số thứ tự sheet và tên sheet, các bạn xem và sửa lại cho đúng sheet.
+ Việc các bạn đưa Code vào module thì mình đã hướng dẫn, nhưng việc đưa code vào sheet thì mình chưa hướng dẫn các bạn. Hôm nay mình sẽ hướng dẫn các bạn để đưa code này vào trong sheet.
- Đầu tiên các bạn bấm ALT + F11 để vào cửa sổ VBAPROJECT như hình sau.
- Tiếp theo các bạn kích đúp chuột vào tên sheet mà bạn muốn đặt code này vào, sau đó tiến hành copy đoạn code của mình qua và dán vào phần bên phải của của sổ như hình bên dưới.
- Cuối cùng các bạn bấm lưu code, sau khi code được lưu xong, các bạn tắt cửa sổ Vba và quay lại file excel của mình để xem thành quả nhé. Hình 3.
=> Vậy là mình đã giới thiệu xong đến các bạn đoạn code tạo Data Validation. Còn nhiều code rất thú vị và hay ở các bài sau, mình sẽ gửi các bạn sau nhé.
Chúc các bạn thành công. Nếu chưa rõ, các bạn có thể Comment vào bài viết nhé.
Cảm ơn và chào các bạn!

0 comments:

Post a Comment