Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel vba:Do循环中的数组不工作_Excel_Vba - Fatal编程技术网

Excel vba:Do循环中的数组不工作

Excel vba:Do循环中的数组不工作,excel,vba,Excel,Vba,我正在尝试创建一个包含项目编号的数组。下面的代码循环浏览国家/地区内的计划列表(在“计划内容审查”选项卡中)。对于每个程序,它切换到一个带有项目列表(项目摘要统计信息)的选项卡,我希望它创建一个带有项目编号的数组,以便在单独的代码中调用它。下面的代码正确地标识了activeprogramnum,但却吐出了各种奇怪的项目编号。救命啊 Sub test_array() Dim ActiveProgramNum Sheets("ProgramContentReview").Select Range("

我正在尝试创建一个包含项目编号的数组。下面的代码循环浏览国家/地区内的计划列表(在“计划内容审查”选项卡中)。对于每个程序,它切换到一个带有项目列表(项目摘要统计信息)的选项卡,我希望它创建一个带有项目编号的数组,以便在单独的代码中调用它。下面的代码正确地标识了activeprogramnum,但却吐出了各种奇怪的项目编号。救命啊

Sub test_array()
Dim ActiveProgramNum
Sheets("ProgramContentReview").Select
Range("b2").Select ' country

Do Until IsEmpty(ActiveCell)

    Dim ProjectNumArray(10)
    Dim l
    l = 0

    If (Sheets("Introduction").Range("A15").Value & " ") = ActiveCell.Value Then ' This identifies the country

     ActiveProgramNum = ActiveCell.Offset(0, 2)

            Sheets("ProjectSummaryStats").Select
            ' Select cell A2, *first line of data*.
            Range("D2").Select
        Do Until IsEmpty(ActiveCell) ' loop through projects (at program level)

             If ActiveProgramNum = ActiveCell.Value Then

                  ProjectNumArray(l) = ActiveCell.Offset(0, 2).Value ' this is the column with the project numbers
                  l = l + 1
                    MsgBox (ActiveProgramNum)
                    MsgBox (ProjectNumArray(l))

              End If

          ActiveCell.Offset(1, 0).Select
          Loop
End If
Sheets("ProgramContentReview").Select
ActiveCell.Offset(1, 0).Select
Loop

End Sub

下面的代码有效!!!!我只包括了关键的变化

    Dim ProjectNumArray() As String
    Dim l As Integer
    l = 0

   'If (Sheets("Introduction")...
   'If ActiveProgramNum = ...

                  l = l + 1
                  ReDim ProjectNumArray(1 To l)
                  ProjectNumArray(l) = ActiveCell.Offset(0, 5).Value

   'Rest is the same

直到ActiveCell.Value=”“我这样做了,它没有改变任何东西。我相信do循环工作正常,因为我在代码的其他地方使用了它……我怀疑这是一个
活动的
单元问题。我建议您遵循下面的操作,并删除所有
活动的
&
选择
语句。