Excel VBA:我可以使用公式来命名一个范围吗?

我的目标是将我的粘贴范围命名为我将来可以find的独特的东西。

复制和粘贴的范围来自下拉菜单,因此必须修改

Selection.Name.Formula = "=""AddSection_""&SUBSTITUTE('Add Section'!D3,"" "","""")" 

如果他们在D3的下拉菜单中select油炉,则复制并粘贴该部分。 它应该被命名为“AddSection_OilFurnace”

这可能吗?

我真的会喜欢的是,如果我可以有一个命名的范围,根据之前有多less存在更新。 例如,上面是“AddSection_OilFurnace1”,下一个部分是“AddSection_GasFurnace2”等等。 但我不知道如何或如果这是可能的哈哈。 会是这样的:

 Worksheets("Add Section").ranges.count 

这是可能的,它将如何进入我的命名公式?

我是VBA的超级新手,非常感谢您的帮助!

我认为YowE3K有正确的做法。 我重构了他的代码,因为我不喜欢Do Loop

 Sub AddName() Dim myNameBase As String Dim arr() As String Dim maxName As Long Dim n As Name myNameBase = "AddSection_" & Replace(Worksheets("Add Section").Range("D3").Value, " ", "") For Each n In Names If n.Name Like myNameBase & "*" Then If n.Name = myNameBase Then maxName = 1 ElseIf n.Name Like myNameBase & ".*." Then arr = Split(n.Name, ".") If arr(UBound(arr) - 1) >= maxName Then maxName = arr(UBound(arr) - 1) + 1 End If End If Next Selection.Name = myNameBase & IIf(maxName, "." & maxName & ".", "") End Sub 

在这里输入图像说明

YowE3K感谢您的帮助!

我相信你想要做的是:

 Selection.Name = "AddSection_" & Replace(Worksheets("Add Section").Range("D3").Value, " ", "") 

或者,设置它以确保范围名称尚未使用,可能是这样的:

 Dim myName As String Dim maxSuffix As Long Dim n As Name myName = "AddSection_" & Replace(Worksheets("Add Section").Range("D3").Value, " ", "") maxSuffix = 0 For Each n In Names If Left(n.Name, Len(myName)) = myName Then If IsNumeric(Mid(n.Name, Len(myName) + 1)) Then If CLng(Mid(n.Name, Len(myName) + 1)) > maxSuffix Then maxSuffix = CLng(Mid(n.Name, Len(myName) + 1)) End If End If End If Next Selection.Name = myName & (maxSuffix + 1) 

这只会增加计数,如果之前已经使用了现有的基础名称,即AddSection_OilFurnace1 ,然后AddSection_OilFurnace2 ,然后可能AddSection_GasFurnace1 – 它不会去AddSection_OilFurnace1AddSection_GasFurnace2AddSection_OilFurnace3 – 但也许它是有用的。