Excel宏循环通过列分配单元名称框

时间:2012-11-08 12:32:25

标签: excel excel-vba loops vba

我想使用相邻单元格中的值填充单元格的名称框。这个宏有效。

Sub NameBox()
   ' populates name box w/ value from adjacent cell
   ActiveCell.Name = ActiveCell.Offset(0, -1).Value
   ' steps down to next cell
   ActiveCell.Offset(1, 0).Select
End Sub

我指定一个键击并遍历列中的每个单元格,这很容易,但我认为它可以通过循环进行改进。

我试过了。

Sub NameBoxLoop()
   Dim cel As Range
   For Each cel In Range("C:C").Cells
      If cel.Value <> "" Then
         cel.Name = cel.Offset(0, -1).Value
      End If
   Next cel
End Sub

但是我收到以下调试错误

  

cel.Name =应用程序定义的错误或对象定义的错误

循环逻辑看起来正确,如果我用cel.Value替换变量cel.Name,循环将完成。

搜索没有提供cel.Name错误的答案。感谢您解决此错误的任何帮助。

1 个答案:

答案 0 :(得分:2)

你的公式有效。但也许你的环境并不是最优的,因为那里你没有纠错 - 名字有局限性。

所以我猜你在B列中没有值,或者B列的值已经被用作其他单元格的名称。

在这两种情况下,你的循环都会破裂。

尝试使用此循环,但请考虑错误证明您的代码:

Sub NameBoxLoop()
   On Error Resume Next
   Dim cel As Range
   For Each cel In Range("C:C").Cells
      If cel.Value <> "" Then
         cel.Name = cel.Offset(0, -1).Value
      End If
   Next cel
end sub

编辑:

作为建议,您可能需要考虑使用Names列表。

以下是excel-help的示例:

ActiveWorkbook.Names.Add Name:="test", RefersTo:="=sheet1!$a$1:$c$20"

这里有一些对象成员:

  • 添加
  • 项目
  • 计数