Bài viết: UDF hữu ích: Xác định một vùng có tồn tại trong một vùng khác hay không

Liên hệ QC

levanduyet

Hãy để gió cuốn đi.
Thành viên danh dự
Tham gia
30/5/06
Bài viết
1,798
Được thích
4,700
Giới tính
Nam
Xác định một vùng có tồn tại trong một vùng khác hay không

Trong một số trường hợp các bạn muốn biết một vùng này có nằm trong một vùng kia hay không. Ví dụ: bạn cần biết ô hiện hành có nằm trong một vùng nào đó hay không chằng hạn.

Trong trường hợp này các bạn có thể dùng hàm sau:
Chú ý rằng, hàm kiểm tra để chắc chắn rằng hai vùng bạn đưa vào hàm này phải cùng trên một workbook và cùng trên một worksheet.
Bạn có thể dùng hàm này trong VBA hoặc worksheet.

UDF-03.JPG


Mã:
Function InRange(rng1, rng2) As Boolean
'   Returns True if rng1 is a subset of rng2
    InRange = False
    If rng1.Parent.Parent.Name = rng2.Parent.Parent.Name Then
        If rng1.Parent.Name = rng2.Parent.Name Then
            If Union(rng1, rng2).Address = rng2.Address Then
                InRange = True
            End If
        End If
    End If
End Function

Ví dụ:

Ví dụ sau cho người sử dụng chọn một vùng và sử dụng hàm InRange để kiểm tra. Nếu người dùng không chọn trong vùng A1:E20, thì hộp thoại yêu cầu sẽ lại hiện ra lại.
Mã:
Sub Test()
    Dim ValidRange As Range, UserRange As Range
    Dim SelectionOK As Boolean
  
    Set ValidRange = Range("A1:E20")
    SelectionOK = False
    On Error Resume Next

    Do Until SelectionOK = True
        Set UserRange = Application.InputBox(Prompt:="Select a range", Type:=8)
        If TypeName(UserRange) = "Empty" Then Exit Sub
        If InRange(UserRange, ValidRange) Then
            MsgBox "The range is valid."

            SelectionOK = True
        Else
            MsgBox "Select a range within " & ValidRange.Address
        End If
    Loop
End Sub

Nguồn từ đây.

Kiểm tra ô hiện hành (ActiveCell) có nằm trong một vùng hay không?

Mã:
Sub CellinRange()
    Dim rngArea As Range

    ' Vùng dữ liệu bạn muốn kiểm tra
    ' Bạn có thể thay đổi theo ý bạn
    Set rngArea = Range("A1:C5")   
   
' Dùng Intersect để kiểm tra
    If Application.Intersect(rngArea, ActiveCell) Is Nothing Then
       MsgBox ("Ô hiện tại không có trong vùng này.")
    Else
       MsgBox ("Ô hiện tại đang ở trong vùng này.")
    End If
End Sub


Nguồn tại đây, bài của SA_DQ.

Bài viết cụ thể về phương thức Intersect xin xem tại đây.
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Web KT
Back
Top Bottom