【问题标题】:Excel: Named range with VBAExcel:使用 VBA 命名范围
【发布时间】:2011-09-07 20:34:12
【问题描述】:

我正在尝试使用 VBA 在 Excel 中定义一个命名范围。 基本上,我有一个可变的列号。然后循环运行以确定该特定列中的第一个空单元格。 现在我想定义一个命名范围,从该特定列的第 2 行到该列中包含数据的最后一个单元格(第一个空单元格 - 1)。

例如,指定了第 5 列,其中包含 3 个值。如果我是正确的,那么我的范围将是 (2,5)(4,5)。 我只是想知道如何仅使用整数而不是 (E2:E4) 来指定此范围。 有可能吗?

我发现这段代码定义了一个命名范围:

'Change the range of cells (A1:B15) to be the range of cells you want to define
    Set Rng1 = Sheets("Sheet1").Range("A1:B15") 
    ActiveWorkbook.Names.Add Name:="MyRange", RefersTo:=Rng1

任何人都可以将我推向正确的方向以仅使用整数指定此范围吗?

【问题讨论】:

    标签: excel list vba range named


    【解决方案1】:

    由于您的定位范围为 E2:E4,您需要指定单元格位置。下面的函数可能对您有用,将列号传递给它,例如5,它会返回地址,所以 5=E 和 27=AA

    ColLetter = ColNo2ColRef(colNo)
    Set Rng1 = Sheets("Sheet1").Range(ColLetter & "2:" & ColLetter & "4") 
    ActiveWorkbook.Names.Add Name:="MyRange", RefersTo:=Rng1
    
    Function ColNo2ColRef(ColNo As Long) As String
        ColNo2ColRef = Split(Cells(1, ColNo).Address, "$")(1)
    End Function
    

    希望对你有帮助

    编辑:或:

    Set rng = Range(Cells(2, 5), Cells(4, 5)) 'E2:E4
    ActiveWorkbook.Names.Add Name:="MyRange", RefersTo:=Rng
    

    【讨论】:

      【解决方案2】:

      或者

      Sub test()
      Set rng1 = Cells(2, 2) 'B2
      
      Set rng2 = rng1.Resize(3, 1) 'B2:B4
      'or
      Set rng2 = Range(rng1, Cells(4, 2)) 'B2:B4
      
      End Sub
      

      或者直接不循环使用

      With Sheet1
          col = 5 'variable col
          Set rng1 = .Range(.Cells(2, col), .Cells(.Rows.Count, col).End(xlUp))
          End With
      

      相同
      with sheet1
          Set rng1 = .Range(.Range("E2"), .Range("E" & .Rows.Count).End(xlUp))
          end with
      

      编辑:如果您将命名范围设置为动态更改,那么您不需要 VBA。将其直接输入 Excel 中的命名范围,并使其在 E2 和最后一项之间自动调整(假设没有空格)。 =$E$2:INDEX($E$2:$E$5000,COUNTA($E$2:$E$5000))(如果您需要更多行,请扩展 5000)

      【讨论】:

        猜你喜欢
        • 2019-12-05
        • 2017-10-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多