我正在尝试创建一个宏,该宏将在命名范围旁边的列中的值上提供的命名范围中添加列。
更具体地说,范围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
答案 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