当我们像这样的工作表(1)。(" A1"

时间:2018-04-12 06:01:43

标签: excel-vba vba excel

Workbooks(test.xlsm).Worksheets("AAA").Range("a1").Copy 
Workbooks(Practice.xlsm).Sheets("AAA").Range("c1")

为什么Range对象不会在上面的查询中自动生成,因为工作表会自动生成 在编写上面代码的工作簿对象之后。

1 个答案:

答案 0 :(得分:4)

一个非常好的问题。以下是我对它的理解,我认为这是正确的,但后来......可能不是正确的:D

这可以用" Earlybinding"来解释。和"后期绑定"概念。在后期绑定中,对象在运行时而不是事先解析,因此Intellisense不适用于 Late Bound 对象。

在VBE中分别输入这两个单词,你会看到这个

enter image description here

Workbooks对象早期绑定As Workbook)和Worksheets对象后期绑定As Object) 。

那么我们如何绕过呢?只需声明您的对象即可。例如

Sub Sample()
    Dim wb As Workbook
    Dim ws As Worksheet '<~~ EARLY BINDING

    Set wb = Workbooks("Test.xlsm")
    Set ws = wb.Worksheets("AAA")
End Sub

现在你将获得智能感知

enter image description here