试图消除VBA中的.activate和.select,而不是在尝试SET范围时得到错误1004

深受Excel VBA的沮丧,因为我试图避免在一系列复制/粘贴或粘贴特殊操作之间切换源和目的地。

这是问题代码的一个片段:

Dim wbkSource As Workbook Dim wbkDest As Workbook Dim rngOutput As Range Dim iCol As Integer ' Used for destination paste Set wbkSource = ActiveWorkbook Set wbkDest = ActiveWorkbook 'After adding destination workbook iCol = 1 **Set rngOutput = wbkDest.Worksheets("Sheet1").Range(1, iCol)** 

突出显示的行总是生成运行时错误1004,“应用程序定义或对象定义的错误”。

我做错了什么? 我的代码工作依次激活每个工作簿,并select目标单元格,但这是如此丑陋和低效率。

感谢您的任何build议。

ASH在评论中得到了正确的评价,相信他,但似乎他没有时间发表全面的回应,而是select了评论。

范围是一个范围,单个单元也可以是一个范围。

语法是:

 Cells([rowindex],[columnindex]) 

和范围是

 Range([cell1],[cell2]) 

以下也是可以接受的(因为看上去很丑)

 Range(Cells(1,1),Cells(2,2)) 'Equivalent to Range("A1:B2") 'Also this crazy mess works too Dim intRow As Integer: intRow = 1 Cells("A" & intRow) Range("A1:B" & intRow) 

最后的答案来纠正你的问题:

 Set rngOutput = wbkDest.Worksheets("Sheet1").Cells(1, iCol) 

我希望这可以帮助,我很高兴你离开。激活和。select!