在Excel中创建名称范围的动态更改名称

时间:2014-04-24 11:46:46

标签: excel excel-vba vba

我正在寻找一种在Excel中创建名称范围的动态更改名称的方法。 例如:

A1 = "John"
A2 = 32
A3 = "st.lo"

现在我想要范围A1的名称:A3将是“John” 请注意,A1的值可以更改为另一个值,例如:

A1 = "michele"

现在我希望范围A1:A3的名称将更改为“michele”(自动)。 提前谢谢

1 个答案:

答案 0 :(得分:3)

您可以在事件中使用:

Private Sub Worksheet_Change(ByVal Target As Range)

本准则:

ActiveWorkbook.Names(Range("A1").CurrentRegion.Name.Name).Name = Range("A1").Value

每次更改单元格A1的名称时,宏都会更改范围的名称...
我解释一下:直接从Cell“A1”中取出范围的名称:

Range("A1").CurrentRegion.Name.Name

并从Range的名称集合中获取:

ActiveWorkbook.Names(

使用新值“A1”更改名称:

).Name 

好吗?

对于每个范围:
在你的宏内:

For Each xx In ActiveWorkbook.Names
    CellRange = Cells(Range(xx.Value).Row, Range(xx.Value).Column)
    xx.Name = CellRange
Next

注意不要有两个同名的单元格。范围名称应该是唯一的...
说明:对于工作簿中的每个RangeName,我采用(2°行)第一个单元格的值,它给出了Range的名称。我改名后......