반응형
VBA를 사용하여 명명된 범위를 정의하려면 어떻게 해야 합니까?
저는 X라는 이름의 범위가 1000행인데 이것을 100행으로 동적으로 줄이고 싶습니다.
나는 노력했다.Range("X").Resize(100,1)
이 외에도.Resize(-900,0)
그러나 range 드롭다운 메뉴에서 range를 선택하여 excel 체크인을 하면 이름이 붙은 range의 크기가 변경되지 않는 것 같습니다.내가 뭘 잘못하고 있는 거지?
"myRange"라는 이름의 범위가 있다고 가정해 보겠습니다.이렇게 하면 다음과 같습니다.
Dim r As Range
Set r = Range("myRange")
Debug.Print r.Resize(10, 1).Address
네 말은, 내가 이 정도 범위를 가지고 있다는 거지r
. 일치하도록 설정합니다.myRange
최초의 상태로그런 다음 크기 조정r
다른 곳으로 말입니다.당신이 한 일은 당신이 사이즈를 조정한 것입니다.r
,것은 아니다.myRange
.
명명된 범위의 크기를 조정하려면 다음과 같은 작업을 수행해야 합니다.
Dim wb As Workbook
Dim nr As Name
Set wb = ActiveWorkbook
Set nr = wb.Names.Item("myRange")
' give an absolute reference:
nr.RefersTo = "=Sheet1!$C$1:$C$9"
' or, resize relative to old reference:
With nr
.RefersTo = .RefersToRange.Resize(100, 1)
End With
당신의 공헌에 감사드립니다.당신의 도움을 바탕으로 이 코드를 조합하여 범위 크기를 조정하고 배열에서 n개의 행을 게시할 수 있었습니다.
Sub PostArrayLinesToRange(ByVal rngName As String, ByRef arr As Variant, ByVal r As Long)
Dim wb As Workbook
Dim rng As Range
Dim nr As Name 'Variable to change named range size definition
Set wb = ThisWorkbook
Set rng = Range(rngName)
rng.Clear
Set nr = wb.Names.item(rngName)
With nr
.RefersTo = .RefersToRange.Resize(r, UBound(arr, 2))
End With
Set rng = Range(rngName)
rng = arr
Erase arr
Set nr = Nothing
Set rng = Nothing
Set wb = Nothing
End Sub
언급URL : https://stackoverflow.com/questions/11031891/how-do-i-redefine-a-named-range-with-vba
반응형
'programing' 카테고리의 다른 글
스캔f() 발행전 C/C++ printf() (0) | 2023.09.20 |
---|---|
OQGRAPH 쿼리에서 노드 간의 관계를 선택할 수 있습니까? (0) | 2023.09.20 |
MySQL/MariaDB의 다중 조인에서 값이 가장 낮은 요소 선택 (0) | 2023.09.20 |
wp-config.php에 기본 인증 키 값을 그대로 둔 경우 해커가 데이터베이스에 액세스할 수 있습니까? (0) | 2023.09.20 |
WC_상품_have_posts()에서 작동하지 않는 쿼리 (0) | 2023.09.20 |