我想将数据从一个工作表复制到另一个工作表(取决于可用的工作表数量),列数是动态的。
如果我使用下面的代码,它会显示一个Application对象错误:
function resize() {
const rChildren = rec.children;
let numW = 0;
[...rChildren].forEach(item => {
item.outHTML = '';
tele.appendChild(item);
})
const teleW = tele.offsetWidth,
tChildren = tele.children;
[...tChildren].forEach(item => {
numW += item.offsetWidth;
if (numW > teleW) {
item.outHTML = '';
rec.appendChild(item);
}
});
}
如果我使用它:
Worksheets(1).Range(Cells(m, 2), Cells(m, 7)).Value = ThisWorkbook.Worksheets(i).Range(Cells(3, 2), Cells(3, 7)).Value
它工作正常,但我不能使我的列动态。
答案 0 :(得分:2)
如果您不符合Cells
引用的资格,则默认为ActiveSheet.Cells
。因此你的代码
Worksheets(1).Range(Cells(m, 2), Cells(m, 7)).Value = _
ThisWorkbook.Worksheets(i).Range(Cells(3, 2), Cells(3, 7)).Value
相当于
Worksheets(1).Range(ActiveSheet.Cells(m, 2), ActiveSheet.Cells(m, 7)).Value = _
ThisWorkbook.Worksheets(i).Range(ActiveSheet.Cells(3, 2), ActiveSheet.Cells(3, 7)).Value
这显然毫无意义。
你应该使用
Worksheets(1).Range(Worksheets(1).Cells(m, 2), Worksheets(1).Cells(m, 7)).Value = _
ThisWorkbook.Worksheets(i).Range(ThisWorkbook.Worksheets(i).Cells(3, 2), ThisWorkbook.Worksheets(i).Cells(3, 7)).Value
如果设置了一些Worksheet
个对象
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Set ws1 = ActiveWorkbook.Worksheets(1)
Set ws2 = ThisWorkbook.Worksheets(i)
ws1.Range(ws1.Cells(m, 2), ws1.Cells(m, 7)).Value = _
ws2.Range(ws2.Cells(3, 2), ws2.Cells(3, 7)).Value