我想使用相邻单元格中的值填充单元格的名称框。这个宏有效。
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错误的答案。感谢您解决此错误的任何帮助。
答案 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"
这里有一些对象成员: