- Tham gia
- 30/5/06
- Bài viết
- 1,798
- Được thích
- 4,706
- 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.
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.
Nguồn từ đây.
Kiểm tra ô hiện hành (ActiveCell) có nằm trong một vùng hay không?
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.
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.
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