使用VBA直接引用范围Excel

使用VBA直接引用范围Excel,excel,vba,select,reference,Excel,Vba,Select,Reference,我无法使用直接引用。我试图在不使用“选择”或“激活”的情况下将值放入根工作簿。但是,如果需要复制数据的工作表未处于活动状态,则我的代码会给出一个错误。如果工作表处于活动状态,代码工作正常 这是我的密码 Workbooks(root).Activate Dim wb As Workbook Set wb = Application.Workbooks(root) wb.Sheets("d_eff_stress").Cells(1, n).Value = filename wb.Sheets("d

我无法使用直接引用。我试图在不使用“选择”或“激活”的情况下将值放入根工作簿。但是,如果需要复制数据的工作表未处于活动状态,则我的代码会给出一个错误。如果工作表处于活动状态,代码工作正常

这是我的密码

Workbooks(root).Activate
Dim wb As Workbook
Set wb = Application.Workbooks(root)

wb.Sheets("d_eff_stress").Cells(1, n).Value = filename
wb.Sheets("d_eff_stress").Range(Cells(3, n), Cells(100, n)).Value = varray1
wb.Sheets("eff_stress").Cells(1, n).Value = filename
wb.Sheets("eff_stress").Range(Cells(3, n), Cells(100, n)).Value = varray2
解决方案:完全参考范围。。。我早就知道了

Workbooks(root).Activate
Dim wb As Workbook
Set wb = Application.Workbooks(root)

wb.Sheets("d_eff_stress").Cells(1, n).Value = filename
wb.Sheets("d_eff_stress").Range(wb.Sheets("d_eff_stress").Cells(3, n), wb.Sheets("d_eff_stress").Cells(100, n)).Value = varray1
wb.Sheets("eff_stress").Cells(1, n).Value = filename
wb.Sheets("eff_stress").Range(wb.Sheets("eff_stress").Cells(3, n), wb.Sheets("eff_stress").Cells(100, n)).Value = varray2

您需要将工作表的父级分配给范围内的
单元格

wb.Sheets("d_eff_stress").Range(wb.Sheets("d_eff_stress").Cells(3, n), wb.Sheets("d_eff_stress").Cells(100, n)).Value
要减少键入,请将
块一起使用:

Workbooks(root).Activate
Dim wb As Workbook
Set wb = Application.Workbooks(root)

With wb.Sheets("d_eff_stress")
    .Cells(1, n).Value = filename
    .Range(.Cells(3, n), .Cells(100, n)).Value = varray1
End With

With wb.Sheets("eff_stress")
    .Cells(1, n).Value = filename
    .Range(.Cells(3, n), .Cells(100, n)).Value = varray2
End With

检查
root
是否持有正确的书籍。可能的副本不要将解决方案放入问题中,因为这会使答案看起来不必要。通过单击答案旁边的灰绿色复选标记来标记正确答案。但是你必须等15分钟,从问题被问起。所以过几分钟再来,把答案标记为正确。