0

我的电子表格的第一列是唯一键(数据方面,与 excel 无关)。我的另一列包含指向其他行的链接(指向该行的唯一键)。当我插入这些超链接时,我需要指向“定义的名称”,因为行顺序会随着时间而改变。

我不想每次插入新行时都必须创建定义的名称。有没有办法自动将列的文本定义为“定义的名称”?

我希望这很清楚。

非常感谢。

4

2 回答 2

2

您应该查看Workbook.NamesWorksheet.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 中找到的值(文本)。

希望这可以帮助!

麦克风

于 2009-03-10T00:42:08.323 回答
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
于 2009-03-10T16:40:08.833 回答