Excel VBA - 定义命名范围

时间:2014-03-13 12:25:26

标签: excel vba excel-vba

对于内容范围为C4:C53工作表"尺寸选择"的每个单元格,我想创建一个新的命名范围,该范围的名称应该与该单元格的内容相同。

每个命名范围都应该是公式驱动的,并且有一个取决于单元格行的变量。

我已尝试过对此进行编码,但不断出错;你能看看并帮我解决这个问题吗?

Private Sub Worksheet_Change(ByVal Target As Range)

    If Not Intersect(Target, Range("A1:F20000")) Is Nothing Then

    Dim i As Integer
    Dim range_name As String


    For i = 4 To 53

    If Sheets("Size Selection").Cells(i, 3) <> "" Then

    Range(range_name).Formula = "=OFFSET('Size Selection'!$F$" & i & ", 0, 0, 1, COUNT(IF('Size Selection'!$F$" & i & ":$AZ$" & i & "="", "", 1)))"

    Range(range_name).Name = Sheets("Size Selection").Cells(i, 3)

    End If

    Next

    End If

End Sub

非常感谢你的帮助!

1 个答案:

答案 0 :(得分:1)

根据您在下面讨论中的评论,以下是我认为您之后的评论:

Private Sub Worksheet_Change(ByVal Target As Range)

    If Not Intersect(Target, Range("A1:F20000")) Is Nothing Then

    Dim i As Integer
    Dim range_name As String


    For i = 4 To 53

      If Sheets("Size Selection").Cells(i, 3) <> "" Then

       ActiveWorkbook.Names.Add _
          Name:= Sheets("Size Selection").Cells(i, 3).Text, _
          RefersToR1C1:="=OFFSET('Size Selection'!$F$" & i & ", 0, 0, 1, COUNT(IF('Size Selection'!$F$" & i & ":$AZ$" & i & "="", "", 1)))"

      End If

    Next

    End If

End Sub

RefersToR1C1部分可能错误,但至少现在应该对你有所了解。

希望这可以解决问题!!