尝试在VBA中消除.activate和.select,在尝试SET范围时获取错误1004

时间:2017-03-12 07:32:49

标签: excel vba excel-vba

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

以下是问题代码的一个片段:

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,“应用程序定义的错误或对象定义的错误。”

我到底做错了什么?我让代码依次激活每个工作簿,然后选择目标单元格,但这很丑陋而且效率低下。

感谢您的任何建议。

1 个答案:

答案 0 :(得分:6)

A.S.H在评论中说得对,信任他,但看来他没有时间发表完整回复并选择了评论。

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

语法为:

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)

我希望这会有所帮助,我很高兴你离开了。激活和选择!