셀이 범위 내에 있는지 여부를 VBA 테스트
Excel VBA에서 주어진 셀이 주어진 범위 내에 있는지 테스트하고 싶습니다.이것을 하는 가장 좋은 방법은 무엇입니까?
도움말에서:
Set isect = Application.Intersect(Range("rg1"), Range("rg2"))
If isect Is Nothing Then
MsgBox "Ranges do not intersect"
Else
isect.Select
End If
테스트할 두 범위(지정된 셀과 지정된 범위)가 동일하지 않은 경우Worksheet
그러면 오류가 발생합니다.따라서, 그것을 피하는 방법은 다음과 같은 것을 사용하는 것입니다.
Sub test_inters(rng1 As Range, rng2 As Range)
If (rng1.Parent.Name = rng2.Parent.Name) Then
Dim ints As Range
Set ints = Application.Intersect(rng1, rng2)
If (Not (ints Is Nothing)) Then
' Do your job
End If
End If
End Sub
Microsoft Excel의 VBA를 사용하여 셀이 범위 내에 있는지 확인합니다.
연결된 사이트(원래 제출자에 대한 신용 유지):
Microsoft Excel 애플리케이션 개발, 템플릿 사용자 지정, 지원 및 교육 솔루션을 제공하는 Erlandsen Data Consulting에서 제공하는 VBA 매크로 팁
Function InRange(Range1 As Range, Range2 As Range) As Boolean
' returns True if Range1 is within Range2
InRange = Not (Application.Intersect(Range1, Range2) Is Nothing)
End Function
Sub TestInRange()
If InRange(ActiveCell, Range("A1:D100")) Then
' code to handle that the active cell is within the right range
MsgBox "Active Cell In Range!"
Else
' code to handle that the active cell is not within the right range
MsgBox "Active Cell NOT In Range!"
End If
End Sub
@mywolfe02는 정적 범위 코드를 제공하여 그의 inRange가 정상적으로 작동하지만 동적 범위를 추가하려면 그의 inRange 기능과 함께 이 코드를 사용합니다.시작 셀을 고정하기 위해 데이터를 채우고 마지막 열도 고정할 때 더 잘 작동합니다.
Sub DynamicRange()
Dim sht As Worksheet
Dim LastRow As Long
Dim StartCell As Range
Dim rng As Range
Set sht = Worksheets("xyz")
LastRow = sht.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).row
Set rng = Workbooks("Record.xlsm").Worksheets("xyz").Range(Cells(12, 2), Cells(LastRow, 12))
Debug.Print LastRow
If InRange(ActiveCell, rng) Then
' MsgBox "Active Cell In Range!"
Else
MsgBox "Please select the cell within the range!"
End If
End Sub
다음은 범위 내에 셀이 있는지 확인하는 다른 옵션입니다.나처럼 교차 솔루션에 문제가 있는 경우.
If InStr(range("NamedRange").Address, range("IndividualCell").Address) > 0 Then
'The individual cell exists in the named range
Else
'The individual cell does not exist in the named range
End If
InStr은 다른 문자열 내에 문자열이 존재하는지 확인하는 VBA 함수입니다.
https://msdn.microsoft.com/en-us/vba/language-reference-vba/articles/instr-function
저는 항상 인접한 범위에서 일하지 않습니다.비연속 범위에 대한 제 솔루션은 다음과 같습니다(여기에 다른 답변의 일부 코드 포함).
Sub test_inters()
Dim rng1 As Range
Dim rng2 As Range
Dim inters As Range
Set rng2 = Worksheets("Gen2").Range("K7")
Set rng1 = ExcludeCell(Worksheets("Gen2").Range("K6:K8"), rng2)
If (rng2.Parent.name = rng1.Parent.name) Then
Dim ints As Range
MsgBox rng1.Address & vbCrLf _
& rng2.Address & vbCrLf _
For Each cell In rng1
MsgBox cell.Address
Set ints = Application.Intersect(cell, rng2)
If (Not (ints Is Nothing)) Then
MsgBox "Yes intersection"
Else
MsgBox "No intersection"
End If
Next cell
End If
End Sub
언급URL : https://stackoverflow.com/questions/5183374/vba-test-if-cell-is-in-a-range
'programing' 카테고리의 다른 글
하향식 및 상향식 프로그래밍 (0) | 2023.06.15 |
---|---|
TensorFlow 2가 TensorFlow 1보다 훨씬 느린 이유는 무엇입니까? (0) | 2023.06.15 |
Oracle에서 날짜에서 시간을 빼서 해당 날짜에도 영향을 미치도록 하는 방법 (0) | 2023.06.15 |
vuex 작업에서 반환되는 약속 내부의 VueJS 메서드 테스트 (0) | 2023.06.15 |
iPhone 브라우저에서 localhost에서 실행되는 웹 사이트에 액세스하는 방법 (0) | 2023.06.15 |