programing

VBA를 사용하여 명명된 범위를 정의하려면 어떻게 해야 합니까?

powerit 2023. 9. 20. 20:48
반응형

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

반응형