VBA:错误“1004”尝试从工作表中提取值时

时间:2016-06-21 16:08:34

标签: vba

当尝试将工作表范围中的值放入变量数组时,我需要选择工作表,尽管已将工作表名称放在我的代码中。

Sub SetCoords()

Dim CoordsVariant As Variant

ReDim CoordsVariant(1 To 2, 1 To 3)

CoordsVariant = ThisWorkbook.Worksheets("Geometry and Properties").Range(Cells(4, 3), Cells(5, 5)).Value

End Sub

如果我在后台选择了工作表“几何和属性”,那么它可以正常工作。如果不是,我尽管告诉它要去的工作表的名称,我也会收到错误。

3 个答案:

答案 0 :(得分:1)

问题在于您限定了范围而不是单元格,因此它正在查看活动工作表。如果活动工作表不是范围所指的工作表,则会出现错误。

使用With Block和必需.来表示所有范围对象的正确父级。

Sub SetCoords()

Dim CoordsVariant As Variant
ReDim CoordsVariant(1 To 2, 1 To 3)

With ThisWorkbook.Worksheets("Geometry and Properties")
    CoordsVariant = .Range(.Cells(4, 3), .Cells(4 + NNodes - 1, 5)).Value
End With

End Sub

答案 1 :(得分:0)

您正在使用Range,您需要在之前添加以下行:

ThisWorkbook.Worksheets("Geometry and Properties").Activate

答案 2 :(得分:0)

您的问题是您使用的是ThisWorkbookThisWorkbook是目前活动的工作簿。我打赌你有一本以上的工作簿。

当您激活另一个工作簿时,您的代码正在尝试在活动工作簿中查找没有具有该名称的工作表的工作表。

请改用以下代码:

Sub SetCoords()

Dim CoordsVariant As Variant

ReDim CoordsVariant(1 To 2, 1 To 3)

CoordsVariant = Application.Workbooks("{WRITE OUT THE NAME OF YOUR WORKBOOK HERE}").Worksheets("Geometry and Properties").Range(Cells(4, 3), Cells(4 + NNodes - 1, 5)).Value

End Sub