VBA 扩展工作簿中的 multiple/all 个命名范围

VBA to extend multiple/all named ranges in a workbook

自上周末以来,我一直在努力使用代码来扩展工作簿中所有名为 运行ges 的代码,但它总是出错。以下是我到目前为止所达到的水平,我们将不胜感激任何帮助:

    Sub ResizeNamedRange()
    Dim xWb As Workbook
    Dim xName As Name
    Set xWb = Application.ActiveWorkbook
    Set xName = xWb.Names.Item
    
    For Each xName In ActiveWorkbook.Names

    With xName
        .RefersTo = .RefersToRange.Resize(, 14)
    End With
    Next
    End Sub

我也试过下面的代码:

Sub AdjNamedRanges_New()
    Dim nRange          As Name
    Dim strName         As String
    Dim ans As Long
For Each nRange In ActiveWorkbook.Names
    strName = nRange.Name
    With ActiveWorkbook.Names.Item(strName)
    ans = Range(strName).Columns.Count
        
        .RefersTo = .RefersToRange.Resize(, ans + 12)
    
    End With
Next nRange
End Sub
  1. 当我运行这个宏时,它给了我错误'400'

  2. 当我按下 'F8' 时,'nRange' 和 'strName' 都在鼠标悬停时显示 'File Name'(当前文件名)。

  3. 在'For'语句后,鼠标上的strName显示错误“

  4. 我曾尝试将上述代码粘贴到新模块以及活动模块中 sheet,但没有成功。

你能告诉我我做错了什么吗?

你的错误在这一行:

Set xName = xWb.Names.Item

item 需要一个参数,所以你应该写:

Set xName = xWb.Names.Item(1)

或类似。

虽然文档说参数是可选的,但后来在备注中添加了:

You must specify one, and only one, of these three arguments.

您的其余代码工作正常!

参考:

亲爱的,

对于所有遇到同样问题的人,我可以通过以下宏解决它:

Sub MonthlyReporting()
    Dim nRange          As Name
    Dim strName         As String
    Dim ans As Long
  
For Each nRange In ActiveWorkbook.Names
On Error Resume Next
    strName = nRange.Name
    With ActiveWorkbook.Names.Item(strName)
    ans = Range(strName).Columns.Count
        
        .RefersToR1C1 = .RefersToRange.Resize(, ans + 12)
    End With
Next nRange

End Sub