Vba 选择范围时出现运行时错误“1004”

Vba 选择范围时出现运行时错误“1004”,vba,excel,Vba,Excel,我在此代码上得到运行时错误“1004” sh2是另一个文件上的特定工作表。我不想激活第二张工作表,只需使用它,然后关闭文件。我在else条件下得到错误 If sh2.Range(sh2.Cells(1, y + 4), sh2.Cells(1, y + 4)) <> "" Then y = y + 1 Else: sh2.Range(sh2.Cells(1, 4), sh2.Cells(114, (y + 4) - 1)).Select

我在此代码上得到运行时错误“1004” sh2是另一个文件上的特定工作表。我不想激活第二张工作表,只需使用它,然后关闭文件。我在else条件下得到错误

If sh2.Range(sh2.Cells(1, y + 4), sh2.Cells(1, y + 4)) <> "" Then
                        y = y + 1
Else: sh2.Range(sh2.Cells(1, 4), sh2.Cells(114, (y + 4) - 1)).Select
                        Selection.Copy
当我试着调试时:y是49,因为它必须是49,而else下的区域的单元格得到它们自己的正确值。我的错误在哪里

另外,我正在使用excel 2013,在此代码之前y设置为0,我认为如果您删除sh2。在sh2.0范围内,它将工作

将sh2.Rangesh2.Cells1,y+4,sh2.Cells1,y+4更改为

sh2.1范围单元格1,y+4,单元格1,y+4

未经测试,但请尝试sh2.Rangesh2.Cells1、4、sh2.Cells114、y+4-1。复制而不选择
我想你不能在工作表上选择任何东西,除非你激活它

你的原始代码为我工作-如果你放弃选择会发生什么


错误在else下的范围内,第一个范围为OK。请避免使用。选择/。激活
Dim sh2 As worksheet
Set sh2 = Sheets(2)

y = 49
If sh2.Range(sh2.Cells(1, y + 4), sh2.Cells(1, y + 4)) <> "" Then
    y = y + 1
Else
    sh2.Range(sh2.Cells(1, 4), sh2.Cells(114, (y + 4) - 1)).Copy
End If