命名多个可变长度范围

Naming Many Ranges of Variable Length

我在一列中有一长串值,我想将其命名为范围:

每个范围的名称应该是加粗的单元格。

这是我目前得到的,我确定它很笨重但它是我的(有点);我从其他问题中发现的其他零碎代码中拼凑了它。它应该用粗体文本减去空格来命名一个范围;然后重复删除命名范围并使用每个新的非粗体字符串再次添加它。

当我尝试 运行 它时,出现错误:运行时错误 9;下标超出范围。

我想我对 "RefersToR1C1" 这件事很着迷,我用谷歌搜索了它,但对我来说没有意义。

Sub Change_Name()

Dim RngName As String
Dim MyADD As String

Sheets("Sheet 4").Select
Range("C2").Select

 While Not IsEmpty(ActiveCell.Value)

If ActiveCell.Font.Bold = True Then

ActiveCell.Replace " ", ""
RngName = ActiveCell.Value

Else

MyADD = ActiveWorkbook.Names(RngName).RefersToR1C1
MyADD = MyADD & "," & CStr(ActiveCell)
ActiveWorkbook.Names("RngName").Delete
ActiveWorkbook.Names.Add Name:="RngName", RefersToR1C1:=MyADD

End If

Selection.Offset(1, 0).Select

Wend

End Sub

我觉得我很接近,这就是我几个小时前的想法。任何帮助表示赞赏。我只知道 vba 足以破坏东西和浪费我的时间,所以假设我什么都不知道。

我明白了。我不得不在名称中进行大量替换,以便它们成为正确的范围名称。范围名称是粗体,值不是。

Option Explicit

Sub Change_Name()

Dim Rng As Range
Dim cell As String
Dim RngName As String
Dim MyADD As Range
Set MyADD = Nothing
Sheets("Sheet6").Select
Range("F1").Activate

Set Rng = Nothing

 While Not IsEmpty(ActiveCell.Value)

If ActiveCell.Font.Bold = True Then

ActiveCell.Replace " ", ""
ActiveCell.Replace "&", "_"
ActiveCell.Replace "/", "."
ActiveCell.Replace "-", ""
ActiveCell.Replace "(", "_"
ActiveCell.Replace ")", "_"
ActiveCell.Replace ",", "_"
RngName = ActiveCell.Value
Selection.Offset(1, 0).Select

    While ActiveCell.Font.Bold = False And IsEmpty(ActiveCell.Value) = False

        If Rng Is Nothing Then
            Set Rng = Range(ActiveCell.Address)
            Selection.Offset(1, 0).Select
        Else
            Set MyADD = Range(ActiveCell.Address)
            Set Rng = Union(Rng, MyADD)
            Selection.Offset(1, 0).Select
        End If
    Wend

    ActiveWorkbook.Names.Add Name:=RngName, RefersTo:=Rng
    Set Rng = Nothing

End If
  Wend

End Sub