使用2d数组中的值作为工作表名称

时间:2017-11-03 13:49:52

标签: arrays excel-vba vba excel

我通过以下方式声明了一个二维数组:

WS_array_bodem = [{"Gewasbescherming" ,"range_gewas"; "Bodem-Bemesting","range_bodem"; "Biodiversiteit", "range_biodi"; "Water", "range_water";"Energie","range_energ"}]

然后我想使用这个2d数组的第一列中的值作为下面的工作表的名称。我首先将这些数组定义为1d,然后它工作,但由于某种原因添加额外的维度会导致代码失败,显示:

  

错误1004“应用程序定义或对象定义的错误”

使用msgbox(WS_array_bodem(1,1)我得到了字符串:Gewasbescherming。那么下面的代码出了什么问题呢?

Dim lastrow_gewas As Integer
    lastrow_gewas = WB_score.Worksheets(WS_array_bodem(1, 1)).Range("B" & Rows.Count).End(xlUp).row
Dim range_gewas As Range
    Set range_gewas = WB_score.Worksheets(WS_array_bodem(1, 1)).Range("B1:B" & lastrow_gewas)

WB_score定义为:

Dim WB_score As Workbook
    If BookOpen(scorebook) Then
    Else
        Workbooks.Open (ThisWorkbook.Path & "\" & scorebook)
    End If
    Set WB_score = Application.Workbooks(scorebook)

工作正常。

我试图引用的工作表存在于WB_score中。

1 个答案:

答案 0 :(得分:0)

我看到至少3个可能的错误。尝试这样来避免它们:

Dim lastrow_gewas   As Long
Dim wks             As Worksheet

Set wks = wb_score.Worksheets(WS_array_bodem(1, 1))

With wks
    lastrow_gewas = .Range("B" & .Rows.Count).End(xlUp).Row
End With

可能的错误:

  • 对行使用Integer;
  • 您没有引用.Rows
  • 的正确工作表
  • 你没有工作表" Gewasbescherming",但它是以另一种方式编写的。在这种情况下,您将在Set wks行中收到错误。