반응형
VBA에서 두 가지 범위에서 범위를 생성하는 방법은 무엇입니까?
각각 단일 셀을 포함하는 두 가지 범위가 있습니다(예: "A1" 및 "C3").
이 두 개("A1:C3") 사이의 모든 셀이 포함된 새 범위를 얻으려면 어떻게 해야 합니까?
저는 이걸 해봤어요
Set NewRange = Range(Range1.Address:Range2.Address)
또한 R1C1 형식으로 범위를 설정하려면 어떻게 해야 합니까?Range("A2") 대신 Range("R1C2")와 같은 것을 사용하고 싶습니다.
이렇게요?
Sub Sample()
Dim rng1 As Range, rng2 As Range
Dim NewRng As Range
With ThisWorkbook.Sheets("Sheet1")
Set rng1 = .Range("A1")
Set rng2 = .Range("C3")
Set NewRng = .Range(rng1.Address & ":" & rng2.Address)
Debug.Print NewRng.Address
End With
End Sub
R1C1 형식 대신 사용합니다.Cells(r,c)
. 그러면 유연성과 제어력이 향상됩니다.
그렇게Range("A2")
라고 쓸 수 있습니다.Cells(2,1)
다양한 방법으로 새 범위를 설정할 수 있습니다.다음은 몇 가지 예입니다.R1C1 형식을 얻으려면 - 개인적으로 정규식을 입력한 다음 VBA를 사용하여 필요한 R1C1 형식을 추출하는 것이 더 쉽다고 생각합니다.아래 debug.print 문을 참조하십시오.
Sub test()
Dim rng1 As Range
Dim rng2 As Range
Dim newRng As Range
With Sheet1
Set rng1 = .Range("A1")
Set rng2 = .Range("C3")
Debug.Print rng1.FormulaR1C1
Debug.Print rng1.FormulaR1C1Local
'Method1
Set newRng = .Range(rng1, rng2)
'method2
Set newRng = .Range(rng1.Address, rng2.Address)
'method3 (Only works if rng1 & rng2 are single cells
Set newRng = .Range(rng1.Address & ":" & rng2.Address)
'method4
Set newRng = Union(rng1, rng2)
End With
End Sub
범위가 인접하지 않은 경우 방법 4는 방법 1과 다릅니다.
With Sheet1
Set rng1 = .Range("A1:A3")
Set rng2 = .Range("C1:C3")
'This combines the two separate ranges, so select A1, A2, A3, C1, C2, C3
set newRng = Union(rng1, rng2)
'This combines the two ranges in the same way as when using "A1:C3",
'so including the cells from column B
set newRng = .Range(rng1, rng2)
다음과 같은 경우도 있습니다.
Dim newRange as Range
Set newRange = Range("A1:A4,A7:A9,C1:D9") 'Three different regions grouped
'or
Set newRange = Range("A1:A4,A7:A9,C1:D9, D10:D11") 'Four different regions grouped.
'or
Set newRange = Range("A1:A4,A7:A9,C1:D9, D10:D11, ...") 'N different regions grouped.
모듈에 넣습니다.
Private Function CombineRanges(rng1 As Range, rng2 As Range) As Range
Set CombineRanges = ActiveSheet.Range(rng1.Address & ":" & rng2.Address)
End Function
다음과 같이 사용합니다.
Dim NewRange As Range
Set NewRange = CombineRanges(Range1, Range2)
언급URL : https://stackoverflow.com/questions/12527725/how-to-create-a-range-from-two-ranges-in-vba 입니다.
반응형
'programing' 카테고리의 다른 글
WPF DataGrid 유효성 검사 오류가 지워지지 않습니다. (0) | 2023.04.25 |
---|---|
git reset --hard HEAD는 추적되지 않은 파일을 남깁니다. (0) | 2023.04.25 |
SQL Server의 스키마 바인딩 보기에서 참조하는 열 크기 변경 (0) | 2023.04.20 |
Safari의 Swift Open 링크 (0) | 2023.04.20 |
C#을 사용하여 Excel에서 셀 색상 변경 (0) | 2023.04.20 |