【问题标题】:Renaming a Range in Excel VBA在 Excel VBA 中重命名范围
【发布时间】:2015-02-05 23:34:31
【问题描述】:

我确信这已经完成了,但我无法完全弄清楚我的代码出了什么问题,现在抛出“应用程序定义或对象”错误,但只有当我从一个按钮上运行它时与我要重命名的数据不同的工作表。

如果我在标签上运行它,我希望编辑它工作正常

Sub updateDataSheet()
    Dim lastColumn As Integer
    Dim lastRow As Integer
    lastColumn = (Sheets("Data").Cells(1, columns.count).End(xlToLeft).Column)
    lastRow = Sheets("Data").Cells(Rows.count, 1).End(xlUp).Row

    ActiveWorkbook.Names("myData").RefersTo = Sheets("Data").Range(Cells(1, 1), Cells(lastRow, lastColumn))
end sub

我认为我需要添加一些额外的参考资料,但我看不出我作为一个绝对的 Excel VBA 新手会缺少什么!

任何帮助将不胜感激

【问题讨论】:

  • 你的名字是local吗?
  • 它在我打开的 excel 文件上,如果这就是你所说的本地的意思。如果我从工作表“数据”运行它工作正常,但如果我从同一工作簿上的工作表“按钮”运行它会抛出错误
  • 您有同样的问题,没有使用工作表对象限定Cells 调用,如下所示:stackoverflow.com/questions/28323053/…

标签: excel vba


【解决方案1】:

这对你有用,

Sub updateDataSheet()
    Dim ws As Worksheet
    Dim lastColumn As long
    Dim lastRow As long
    Dim rng As Range
    Set ws = Worksheets("Data")
    With ws
        lastColumn = .Cells(1, Columns.Count).End(xlToLeft).Column
        lastRow = .Cells(Rows.Count, 1).End(xlUp).Row
        Set rng = .Range(.Cells(1, 1), .Cells(lastRow, lastColumn))
        rng.Name = "myData"
    End With
End Sub

一旦你确定了范围,你就可以命名它。

【讨论】:

    猜你喜欢
    • 2019-12-05
    • 2017-10-01
    • 2011-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多