2

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

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.Name 替换为 cel.Value 循环将完成。

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

4

1 回答 1

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"

这里有一些对象成员:

  • 添加
  • 物品
  • 数数
于 2012-11-08T13:15:09.700 回答