我的电子表格的第一列是唯一键(数据方面,与 excel 无关)。我的另一列包含指向其他行的链接(指向该行的唯一键)。当我插入这些超链接时,我需要指向“定义的名称”,因为行顺序会随着时间而改变。
我不想每次插入新行时都必须创建定义的名称。有没有办法自动将列的文本定义为“定义的名称”?
我希望这很清楚。
非常感谢。
我的电子表格的第一列是唯一键(数据方面,与 excel 无关)。我的另一列包含指向其他行的链接(指向该行的唯一键)。当我插入这些超链接时,我需要指向“定义的名称”,因为行顺序会随着时间而改变。
我不想每次插入新行时都必须创建定义的名称。有没有办法自动将列的文本定义为“定义的名称”?
我希望这很清楚。
非常感谢。
您应该查看Workbook.Names或Worksheet.Names(如果您希望将定义的名称限制为工作表)。
上面链接中显示的示例非常好。在您的情况下,您可能希望使用在单元格中找到的 Range.Value 或 Range.Text 用作作为 Names.Add() 方法的“名称”参数传入的字符串。
使用 VBA 可能看起来像这样:
ThisWorkbook.Names.Add _
Name:=Sheet1.Range("A1").Text, _
RefersTo:=Sheet1.Range("A:A"), _
Visible:=True
上面将列 A 的定义名称设置为在标题单元格 A1 中找到的值(文本)。
希望这可以帮助!
麦克风
知道了。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