【问题标题】:Problem copying range from one worksheet to another将范围从一个工作表复制到另一个工作表时出现问题
【发布时间】:2019-01-27 03:01:40
【问题描述】:

我正在尝试将一系列数据从一个工作表复制到一个新工作表。下面的代码可以正常工作,直到最后一行,此时它会抛出“应用程序定义或对象定义的错误”。

看起来我对新工作表范围所做的事情与我对现有 wks/rng 所做的事情相同;不明白为什么 [rngSolution] 没有被实例化?

此代码位于工作簿模块中。我正在使用 Office/Excel 365。我对 Access 对象模型中的 VBA 非常熟悉,但在 Excel obj 模型中却不太熟悉。

感谢您的帮助。

Application.DisplayAlerts = False
On Error Resume Next

'-- delete the Solution wks if it exists
Worksheets("Solution").Delete

On Error GoTo PROC_ERR
Application.DisplayAlerts = True

'-- (re)create the Solutions wks
Worksheets.Add(After:=Sheets(Sheets.Count)).Name = "Solution"

'-- copy original data to new worksheet/range
Dim rngDataset As Range, rngSolution As Range

Set rngDataset = ActiveWorkbook.Sheets("DataSet").Range("A1").CurrentRegion
Debug.Print rngDataset.Name; " "; rngDataset.Rows.Count; " "; rngDataset.Columns.Count

Set rngSolution = ActiveWorkbook.Sheets("Solution").Range("A1")
rngDataset.Copy Destination:=rngSolution

Debug.Print rngSolution.Name; " "; rngSolution.Rows.Count; " "; rngSolution.Columns.Count

【问题讨论】:

  • 只要我在两个 debug.print 行中将 rngDataset.NamerngDataset.addressrngSolution.NamerngSolution.address 进行更改,代码就可以正常工作。

标签: excel vba


【解决方案1】:

rngDatasetrngSolution 不是命名范围,因此范围属性 Name 不可用。如果您愿意,您可以设置名称,例如,在

rngDataset.Name = "Dataset"

虽然不清楚你为什么要这样做。

【讨论】:

  • 好的,我明白了,现在。我只是想验证我是否创建了一个范围。但是为什么“Debug.Print rngDataset.Name; ...”有效?它也不是命名范围。哦,好的,谢谢你的帮助。我很感激。
  • @Mark;为什么Debug.Print rngDataset.Name; 为您工作对我来说是个谜——它不应该...(它打印出什么?)您是否提供了所有代码?有没有可能你在不知不觉中更早地命名了一个范围?请通过在即时窗口中运行 ?ThisWorkbook.Names.Count 来检查:它应该是 0。
猜你喜欢
  • 1970-01-01
  • 2020-04-09
  • 1970-01-01
  • 2016-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-29
  • 1970-01-01
相关资源
最近更新 更多