2012-11-08 66 views
2

我想填充单元格的名称框与来自相邻单元格的值。这个宏的作品。Excel宏循环通过列来分配单元格名称框

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 。名称与cel.Value循环将完成。

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

回答

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的帮助的例子:

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

这里的一些objectmembers的:

  • 添加
  • 项目
  • 计数
+1

你打我对我的回答 - 我认为挑战在于你的循环正在尝试a将相同/空白的名字分配给单元格 –

+0

这样做。谢谢您的帮助。我仍然是这种东西的黑客,看起来我需要更好地处理错误纠正最佳实践。我还会花一些时间来弄清楚确切的错误是什么。虽然它可能只是第二个答复的建议,将空白名称分配给单元格。 –

+0

@PeterPerreault使用Debugger,BreakPoints和'Debug.Print'或Variable-Viewer来了解正在发生的事情;) – Jook

相关问题