根据单元格值将列添加到命名范围

时间:2017-02-06 10:56:34

标签: excel vba excel-vba

我正在尝试创建一个宏,该宏将在命名范围旁边的列中的值上提供的命名范围中添加列。

更具体地说,范围B:G被命名为“家具”。根据此范围(A或H)旁边的列的第一行中的值,我需要向此命名范围添加一列。因此,如果单元格H1是“家具”,则将H列添加到命名范围“家具”中。

当然,它必须是一种通用方法,以便将此范围旁边的每个名为“Furniture”的列添加到其中。

我是VBA的完全新手,所以我创建了一个附加在下面的代码,用于单个案例。但是,它不起作用,而且,它不是一般代码。

Range("H1").Select
If cell.Value = "Furniture" Then
With Range("Furniture")
.Resize(.Columns.Count + 1).Name = "Furniture"
End With
End If

1 个答案:

答案 0 :(得分:1)

如果您可以提供有关表单结构的更多信息,我可以帮助您获得一个不错的循环,因为它不清楚您想如何循环遍历列/行。始终可以在每列的第一行找到目标范围吗?

现在,这将有助于您,因为它动态地将列添加到范围。特定范围的名称来自所选单元格。

lastColumn = Range("A1").SpecialCells(xlCellTypeLastCell).Column


For currentColumn = 1 To lastColumn

    Cells(1, currentColumn).Activate

    If Not IsEmpty(ActiveCell.Value) Then

        targetRange = ActiveCell.Value

        ActiveCell.EntireColumn.Select

        On Error Resume Next

        ActiveWorkbook.Names.Add Name:=targetRange, RefersTo:=Range(targetRange & "," & Selection.Address)

        If Err <> 0 Then

            Debug.Print "Identified range does not exists: " & targetRange

        Else

            Debug.Print "Identified range found, extended it with " & Selection.Address

        End If

    End If

Next currentColumn