从使用的范围偏移设置范围

Set range from used range offset

我想建立一个范围来进行工作。我可以 return 最后使用的单元格的行和列索引,但如何将其包含在命名范围内?

numRows = sht.Cells(Rows.Count, 2).End(xlUp).Row
numColumns = sht.Cells(1, Columns.Count).End(xlToLeft).Column

Set endRange = sht.Cells(numRows, numColumns)

Set workRange = sht.Range("B1", Cells(numRows, numColumns)?

试试这个

Set workRange = sht.Range("B1", Cells(numRows, numColumns))
ActiveWorkbook.Names.Add Name:="myName", RefersToR1C1:=workRange.Address
With sht
    numRows = .Cells(.Rows.Count, 2).End(xlUp).Row
    numColumns = .Cells(1, .Columns.Count).End(xlToLeft).Column

    Set endRange = .Cells(numRows, numColumns)

    Set workRange = .Range("B1", endRange)

    .Parent.Names.Add Name:="myName", RefersToR1C1:=workRange.Address
End With

这应该有效:

With Sheets("Sheet1")
        Set rng = .Range("B1:" & .Cells(numRows, numColumns).Address)
        ThisWorkbook.Names.Add Name:="workRange", RefersTo:=rng
End With

请注意,您可以 运行 多次,它会简单地覆盖现有的命名变量 "workRange" 而不会出现任何问题。

要将其构建为一系列 non-contiguous 范围,您只需使用上面的内容,但将附加范围附加到带有逗号的字符串,如下所示:

Set rng=.Range("B1:C2,E4:F6,G2:" & Cells(numRows,numColumns).Address)