我试图通过将值从一个范围分配到另一个范围来将一些数据从一个工作簿移动到另一个工作簿.当我使用普通的Range语法指定目标范围(Range("A1:B2"))时,我的代码可以工作,但如果我尝试使用Range,Cells语法(范围(单元格(1,1),单元格(2) ,2)))我的代码不起作用.
我激活目标工作簿(ActiveWorkbook)并在源工作簿(ThisWorkbook)中运行代码.
此代码有效:
ActiveWorkbook.Worksheets(1).Range("A1:B2").Value _
= ThisWorkbook.Worksheets(1).Range(Cells(1, 1), Cells(2, 2)).Value
Run Code Online (Sandbox Code Playgroud)
但是这段代码没有:
ActiveWorkbook.Worksheets(1).Range(Cells(1, 1), Cells(2, 2)).Value _
= ThisWorkbook.Worksheets(1).Range(Cells(1, 1), Cells(2, 2)).Value
Run Code Online (Sandbox Code Playgroud)
我得到的错误是运行时错误'1004':应用程序定义或对象定义的错误.
有谁知道为什么使用单元格对象导致我的问题,或者是否有其他问题我不知道?
当您只输入工作表()时,ActiveWorkbook或ThisWorkbook的默认范围是什么?对于那些不了解这些区别的人来说,当您希望在切换到不同的工作簿时运行宏时,它们在Excel 2013中尤为重要.
我有这段代码应该可以正常工作
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Auswertung")
...
ws.Range(Cells(2, 2), Cells(lastRow, lastCol)).NumberFormat = "0"
Run Code Online (Sandbox Code Playgroud)
但是,如果未选择工作表,则会失败。错误 1004,Methode Range 对于对象失败。
如果我把它改成
ws.Select
ws.Range(Cells(2, 2), Cells(lastRow, lastCol)).NumberFormat = "0"
Run Code Online (Sandbox Code Playgroud)
有用。
为什么?在VBA中我想避免select.