Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.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 下标超出范围的问题(错误9)_Excel_Vba - Fatal编程技术网

Excel 下标超出范围的问题(错误9)

Excel 下标超出范围的问题(错误9),excel,vba,Excel,Vba,我以前读过很多关于这个错误的帖子。一个答案已经出现了好几次,指出基本上,VBA找不到我试图指向它的对象。我检查了好几次,名字都是正确的(据我所知)。在此之前,我还在另一台机器上测试这个小宏,没有任何问题 我的代码相当长(对我来说),我很高兴承认这是业余爱好者的胡言乱语。我把整个事情都扔了进去,但我的问题立即发生在顶部,程序找不到ISRTrack工作簿,然后整个过程都是一样的——ISRTrack工作簿永远找不到 我不明白。我有一个类似的过程,我同时打开两个工作簿并运行一个宏,它们相互复制并粘贴到一

我以前读过很多关于这个错误的帖子。一个答案已经出现了好几次,指出基本上,VBA找不到我试图指向它的对象。我检查了好几次,名字都是正确的(据我所知)。在此之前,我还在另一台机器上测试这个小宏,没有任何问题

我的代码相当长(对我来说),我很高兴承认这是业余爱好者的胡言乱语。我把整个事情都扔了进去,但我的问题立即发生在顶部,程序找不到ISRTrack工作簿,然后整个过程都是一样的——ISRTrack工作簿永远找不到

我不明白。我有一个类似的过程,我同时打开两个工作簿并运行一个宏,它们相互复制并粘贴到一起——每个人都很高兴——当然不是这个工作簿。由于某种原因,这根本不起作用

有没有其他我没有想到的可能出现这个错误的原因

请提前告诉我并谢谢你

Sub ISRtoTable()

'check if ISR already exists

Dim ISR_Check As String

Set wISRSTC = ThisWorkbook.Worksheets("ISR - CPDB Staff to Complete")
Set wISRTLD = Workbooks("ISRTrack").Worksheets("ListData")
Set wISRIT = Workbooks("ISRTrack").Worksheets("ISR_Tracker")

wISRSTC.Range("C51").Copy _
    wISRTLD.Range("L19")

ISR_Check = wISRTLD.Range("L20")

If ISR_Check = False Then

'Dim for insertion of row into ISR_Tracker sheet
Dim the_sheet As Worksheet
Dim table_list_object As ListObject
Dim table_object_row As ListRow

'Dim for insertion of row into ISR_Notes sheet
Dim Nthe_sheet As Worksheet
Dim Ntable_list_object As ListObject
Dim Ntable_object_row As ListRow

'Dim for insertion of row into ISR_Financial sheet
Dim Fthe_sheet As Worksheet
Dim Ftable_list_object As ListObject
Dim Ftable_object_row As ListRow

Dim ISR_Yr As String
Dim DT As String
Dim ISR_No As String
Dim FY_One As String
Dim FY_Two As String
Dim FY_Three As String

'Put date and time from ISRT into variable
DT = Workbooks("ISRT").Worksheets("ISR_Tracker").Range("A3")

'Put fiscal year fields into variables for later ISR transferring
FY_One = Workbooks("ISRT").Worksheets("List_Data").Range("K13")
FY_Two = Workbooks("ISRT").Worksheets("List_Data").Range("K14")
FY_Three = Workbooks("ISRT").Worksheets("List_Data").Range("K15")

'Add a row to the ISR_Tracker sheet table
Set the_sheet = Workbooks("ISRT").Worksheets("ISR_Tracker")
Set table_list_object = the_sheet.ListObjects(1)
Set table_object_row = table_list_object.ListRows.Add

'place the year from the List_Data table into a variable
ISR_Yr = Workbooks("ISRT").Worksheets("List_Data").Range("K8")

'Generate an ISR number and put it into the newly created row in the table located in ISR_Tracker
With table_object_row

    If (.Range(1).Row - Workbooks("ISRT").Worksheets("List_Data").Range("K9")) < 10 Then
        .Range(1) = ISR_Yr & "00" & (.Range(1).Row - Workbooks("ISRT").Worksheets("List_Data").Range("K9"))
    Else
        If (.Range(1).Row - Workbooks("ISRT").Worksheets("List_Data").Range("K9")) < 100 Then
            .Range(1) = ISR_Yr & "0" & (.Range(1).Row - Workbooks("ISRT").Worksheets("List_Data").Range("K9"))
        Else
            .Range(1) = ISR_Yr & (.Range(1).Row - Workbooks("ISRT").Worksheets("List_Data").Range("K9"))
        End If
    End If

    .Range(2) = ThisWorkbook.Worksheets("ISR - CPDB Staff to Complete").Range("G4")
    .Range(3) = ThisWorkbook.Worksheets("ISR - CPDB Staff to Complete").Range("D18")
    .Range(4) = ThisWorkbook.Worksheets("ISR - CPDB Staff to Complete").Range("D20")
    .Range(5) = ThisWorkbook.Worksheets("ISR - CPDB Staff to Complete").Range("D10")
    .Range(8) = "IMPORTED"

    'Import ISR number back into ISR Template
    ISR_No = .Range(1)
    ThisWorkbook.Worksheets("ISR - CPDB Staff to Complete").Range("C51") = ISR_No

End With

'Add a row to the ISR_Notes sheet table
Set Nthe_sheet = Workbooks("ISRT").Worksheets("Notes")
Set Ntable_list_object = Nthe_sheet.ListObjects(1)
Set Ntable_object_row = Ntable_list_object.ListRows.Add

'Populate new ISR_Notes table with a note about a new ISR being imported
With Ntable_object_row

    .Range(1) = ISR_No
    .Range(2) = DT
    .Range(3) = Application.UserName
    .Range(4) = "New ISR Imported"

End With

'Add a row to the Financial sheet table to import fiscal year one - if one exists
If ThisWorkbook.Worksheets("ISR - CPDB Staff to Complete").Range("E41") > 0 Then

    Set Fthe_sheet = Workbooks("ISRT").Worksheets("Financial")
    Set Ftable_list_object = Fthe_sheet.ListObjects(1)
    Set Ftable_object_row = Ftable_list_object.ListRows.Add

        With Ftable_object_row

            .Range(1) = ISR_No
            .Range(2) = DT
            .Range(3) = Application.UserName
            .Range(4) = "N/A"
            .Range(5) = FY_One
            .Range(6) = ThisWorkbook.Worksheets("ISR - CPDB Staff to Complete").Range("E41")
            .Range(7) = "ESTIMATE"
            If ThisWorkbook.Worksheets("ISR - CPDB Staff to Complete").Range("H47") = "Yes" Then
                .Range(8) = "Recoverable"
            Else
            End If

        End With

Else
End If

'Add a row to the Financial sheet table to import fiscal year two - if one exists
If ThisWorkbook.Worksheets("ISR - CPDB Staff to Complete").Range("G41") > 0 Then

    Set Fthe_sheet = Workbooks("ISRT").Worksheets("Financial")
    Set Ftable_list_object = Fthe_sheet.ListObjects(1)
    Set Ftable_object_row = Ftable_list_object.ListRows.Add

        With Ftable_object_row

            .Range(1) = ISR_No
            .Range(2) = DT
            .Range(3) = Application.UserName
            .Range(4) = "N/A"
            .Range(5) = FY_Two
            .Range(6) = ThisWorkbook.Worksheets("ISR - CPDB Staff to Complete").Range("E41")
            .Range(7) = "ESTIMATE"
            If ThisWorkbook.Worksheets("ISR - CPDB Staff to Complete").Range("H47") = "Yes" Then
                .Range(8) = "Recoverable"
            Else
            End If

        End With

Else
End If


'Add a row to the Financial sheet table to import fiscal year three - if one exists
If ThisWorkbook.Worksheets("ISR - CPDB Staff to Complete").Range("I41") > 0 Then

    Set Fthe_sheet = Workbooks("ISRT").Worksheets("Financial")
    Set Ftable_list_object = Fthe_sheet.ListObjects(1)
    Set Ftable_object_row = Ftable_list_object.ListRows.Add

        With Ftable_object_row

            .Range(1) = ISR_No
            .Range(2) = DT
            .Range(3) = Application.UserName
            .Range(4) = "N/A"
            .Range(5) = FY_Three
            .Range(6) = ThisWorkbook.Worksheets("ISR - CPDB Staff to Complete").Range("E41")
            .Range(7) = "ESTIMATE"
            If ThisWorkbook.Worksheets("ISR - CPDB Staff to Complete").Range("H47") = "Yes" Then
                .Range(8) = "Recoverable"
            Else
            End If

        End With

Else
End If


'Bottom of check for existing ISR
Else
    MsgBox ("This ISR number already exists in the table.  Operation cancelled.")
    Exit Sub
End If

End Sub
Sub ISRtoTable()
'检查ISR是否已存在
Dim ISR\u检查为字符串
设置wISRSTC=此工作簿。工作表(“ISR-CPDB工作人员完成”)
设置wISRTLD=工作簿(“ISRTrack”)。工作表(“列表数据”)
设置wISRIT=工作簿(“ISRTrack”)。工作表(“ISR\U跟踪器”)
WIRSTC.范围(“C51”).副本_
wISRTLD.范围(“L19”)
ISR_Check=wISRTLD.Range(“L20”)
如果ISR_Check=False,则
'用于将行插入ISR_跟踪表的尺寸
将工作表变暗为工作表
将表格\列表\对象作为列表对象
将表格\对象\行作为列表行进行调整
'用于将行插入ISR_注释表的尺寸
将工作表设置为工作表
Dim Ntable_list_对象作为ListObject
将表\u对象\u行设置为列表行
'用于将行插入ISR_财务表的Dim
将工作表尺寸设置为工作表
Dim Ftable_列表_对象作为列表对象
Dim Ftable_对象_行作为列表行
作为字符串的Dim ISR_Yr
作为字符串的Dim DT
Dim ISR_编号为字符串
把一根线调暗
将FY_2作为字符串
把FY_三当作弦
'将ISRT中的日期和时间放入变量
DT=工作簿(“ISRT”)。工作表(“ISR\U跟踪器”)。范围(“A3”)
'将会计年度字段放入变量中,以便以后进行ISR传输
FY_One=工作簿(“ISRT”)。工作表(“列表数据”)。范围(“K13”)
FY_Two=工作簿(“ISRT”)。工作表(“列表数据”)。范围(“K14”)
FY_三=工作手册(“ISRT”)。工作表(“列表数据”)。范围(“K15”)
'将行添加到ISR_Tracker表中
设置工作表=工作簿(“ISRT”)。工作表(“ISR\U跟踪器”)
Set table\u list\u object=工作表.ListObjects(1)
Set table\u object\u row=table\u list\u object.ListRows.Add
'将列表数据表中的年份放入变量中
ISR_Yr=工作簿(“ISRT”)。工作表(“列表数据”)。范围(“K8”)
'生成一个ISR编号,并将其放入位于ISR_Tracker中的表中新创建的行中
使用表\对象\行
如果(.Range(1).Row-工作簿(“ISRT”).工作表(“列表数据”).Range(“K9”))小于10,则
.Range(1)=ISR_Yr和“00”和(.Range(1).行-工作簿(“ISRT”)。工作表(“列表数据”)。Range(“K9”))
其他的
如果(.Range(1).Row-工作簿(“ISRT”).工作表(“列表数据”).Range(“K9”))小于100,则
.Range(1)=ISR_Yr和“0”和(.Range(1).行-工作簿(“ISRT”)。工作表(“列表数据”)。Range(“K9”))
其他的
.Range(1)=ISR_年和(.Range(1).行-工作簿(“ISRT”)。工作表(“列表数据”)。Range(“K9”))
如果结束
如果结束
.Range(2)=此工作簿。工作表(“ISR-CPDB员工完成”)。范围(“G4”)
.Range(3)=此工作簿。工作表(“ISR-CPDB工作人员完成”)。范围(“D18”)
.Range(4)=此工作簿。工作表(“ISR-CPDB工作人员完成”)。范围(“D20”)
.Range(5)=此工作簿。工作表(“ISR-CPDB工作人员完成”)。范围(“D10”)
.范围(8)=“已导入”
'将ISR编号导入回ISR模板
ISR_编号=.范围(1)
此工作簿。工作表(“ISR-CPDB人员完成”)。范围(“C51”)=ISR\U编号
以
'将行添加到ISR_注释表中
设置工作表=工作簿(“ISRT”)。工作表(“注释”)
Set Ntable\u list\u object=n\u sheet.ListObjects(1)
设置Ntable\u object\u row=Ntable\u list\u object.ListRows.Add
'使用有关正在导入的新ISR的注释填充新ISR_注释表
使用Ntable_对象_行
.范围(1)=ISR_编号
.范围(2)=DT
.Range(3)=Application.UserName
.范围(4)=“新ISR已导入”
以
'向财务表表中添加一行以导入第一会计年度-如果存在
如果此工作簿.worksheet(“ISR-CPDB人员完成”).Range(“E41”)>0,则
设置工作表=工作簿(“ISRT”)。工作表(“财务”)
设置Ftable\u list\u object=Fthe\u sheet.ListObjects(1)
设置Ftable\u object\u row=Ftable\u list\u object.ListRows.Add
带Ftable_对象_行
.范围(1)=ISR_编号
.范围(2)=DT
.Range(3)=Application.UserName
.范围(4)=“不适用”
.范围(5)=FY_1
.Range(6)=此工作簿。工作表(“ISR-CPDB工作人员完成”)。范围(“E41”)
.范围(7)=“估计”
如果此工作簿.工作表(“ISR-CPDB人员完成”).范围(“H47”)=是,则
.范围(8)=“可恢复”
其他的
如果结束
以
其他的
如果结束
'向财务表表中添加一行以导入第二个会计年度-如果存在
如果此工作簿.worksheet(“ISR-CPDB人员完成”).Range(“G41”)>0,则
设置工作表=工作簿(“ISRT”)。工作表(“财务”)
设置Ftable\u list\u object=Fthe\u sheet.ListObjects(1)
设置Ftable\u object\u row=Ftable\u list\u object.ListRows.Add
带Ftable_对象_行
.范围(1)=ISR_编号
.范围(2)=DT
.Range(3)=Application.UserName
.范围(4)=“不适用”
.范围(5)=FY_2
.Range(6)=此工作簿。工作表(“ISR-CPDB工作人员完成”)。范围(“E41”)
.范围(7)=“估计”
如果此工作簿.工作表(“ISR-CPDB人员完成”).范围(“H47”)=是,则