在没有先选择的情况下在其他表格中读取/写入数据

时间:2011-01-06 11:22:13

标签: excel-vba vba excel

我在从其他工作表中读取和写入数据时遇到了一些问题。

虽然我可以使用以下方法读写单细胞:

张(表格名称).cells(x,y).value

使用:

sheet(sheet Name).range(cells(x,y),cells(a,b))。value

似乎不起作用。

虽然通过简单地选择工作表很容易解决这个问题,但它确实有一点开销并感觉非常不合理。

我要求的主要目的是读取和编写数组到非活动工作表,如果有人有替代方案我会非常感激。

干杯

3 个答案:

答案 0 :(得分:3)

如果你想避免使用Select或Activate,你可以不做吗?:

With Sheets("Sheet Name")

    arrData = .Range(.Cells(1,1), .Cells(2,1)).Value

End With

据我所知,这应该有用。

答案 1 :(得分:2)

Dim ws As Worksheet

Set ws= Worksheets("MySheet")

       With ws
        .Range(ws.Cells(3, 1), ws.Cells(3, 14)).ClearContents
       End With

End If

在没有激活工作表

的情况下,这非常有效

答案 2 :(得分:1)

使用范围对象中的单元格方法引用另一个工作表需要您首先激活该工作表(请参阅 msdn 中的第5节)

Sub ReferToCells()
    Dim arrData() As Variant, i As Long
    Sheets("Sheet2").Activate
    arrData = Range(Cells(1, 1), Cells(2, 1)).Value

    For i = 1 To UBound(arrData)
        Debug.Print arrData(i, 1)
    Next i
End Sub