我的电子表格的第一列是一个唯一的密钥(数据明智,与excel无关)。我的另一列包含指向其他行的链接(指向该行的唯一键)。当我插入这些超链接时,我需要指向“已定义的名称”,因为行顺序会随着时间的推移而变化。
每次插入新行时,我都不想创建定义的名称。有没有办法自动将列的文本定义为“已定义的名称”?
我希望这很清楚。
非常感谢。
答案 0 :(得分:2)
您应该查看Workbook.Names或Worksheet.Names(如果您希望将定义的名称限制在工作表中)。
上面链接中显示的示例非常好。在您的情况下,您可能希望使用单元格中的Range.Value或Range.Text作为Names.Add()方法的'Name'参数传入的字符串。
使用VBA可能看起来像这样:
ThisWorkbook.Names.Add _
Name:=Sheet1.Range("A1").Text, _
RefersTo:=Sheet1.Range("A:A"), _
Visible:=True
以上将A列的定义名称设置为标题单元格A1中的值(文本)。
希望这有帮助!
麦克
答案 1 :(得分:0)
知道了。 Mike R.让我走上正轨。感谢。
请注意,需要删除名称的非字母数字字符。此外,复制名称只会覆盖旧引用。
Private Sub Worksheet_Change(ByVal Target As Range)
If (Target.Column = 1 And Target.Text <> "" And Target.Cells.Count = 1) Then
ThisWorkbook.Names.Add _
Name:=StripChar(Target.Text), _
RefersTo:=Target, _
Visible:=True
End If
End Sub
Function StripChar(s As String) As String
With CreateObject("vbscript.regexp")
.Global = True
.ignorecase = True
.Pattern = "[^\dA-Z]"
StripChar = .Replace(s, "")
End With
End Function