我在此代码上收到运行时错误'1004' sh2是另一个文件的特定表。我不想激活第二张表,只需使用它然后关闭文件。我在其他情况下得到了错误
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(因为它必须是)并且else下的范围的单元格获得它们自己的正确值。我的错误在哪里?
PS。我正在使用excel 2013,并且在此代码之前将y设置为0
答案 0 :(得分:1)
尝试sh2.Range(sh2.Cells(1, 4), sh2.Cells(114, (y + 4) - 1)).Copy
(不选择)
我认为你不能在纸张上选择任何东西,除非你激活它
答案 1 :(得分:1)
您的原始代码对我有用 - 如果您放弃Select
会怎样?
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
答案 2 :(得分:0)
我认为如果您从sh2.
中删除sh2.range
,它就会起作用。
将sh2.Range(sh2.Cells(1, y + 4), sh2.Cells(1, y + 4))
更改为
sh2.Range(Cells(1, y + 4), Cells(1, y + 4))
未经测试