Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.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
Vba 此工作簿生成运行时错误9:下标超出范围_Vba_Excel - Fatal编程技术网

Vba 此工作簿生成运行时错误9:下标超出范围

Vba 此工作簿生成运行时错误9:下标超出范围,vba,excel,Vba,Excel,其基本思想(从数组名称来看)是时间表 我有一个主时间表,上面有每个人的名字,+天 其概念是,从数组的L/UBounds打开http链接。从特定工作表中获取数据,将其放入我的主工作表中,关闭工作簿,转到下一个名称 Sub PassToProc() Dim arr(4) As String arr(0) = "https://sharepoint/Time Sheets/Jeff.xlsm" arr(1) = "https://sharepoint/Time Sheets/Jonathan.xlsm

其基本思想(从数组名称来看)是时间表

我有一个主时间表,上面有每个人的名字,+天

其概念是,从数组的L/UBounds打开http链接。从特定工作表中获取数据,将其放入我的主工作表中,关闭工作簿,转到下一个名称

Sub PassToProc()
Dim arr(4) As String
arr(0) = "https://sharepoint/Time Sheets/Jeff.xlsm"
arr(1) = "https://sharepoint/Time Sheets/Jonathan.xlsm"
arr(2) = "https://sharepoint/Time Sheets/Jim.xlsm"
arr(3) = "https://sharepoint/Time Sheets/Topher.xlsm"
arr(4) = "https://sharepoint/Time Sheets/Brandon.xlsm"
' Pass the array to function
UseArray arr
End Sub

Function UseArray(ByRef arrs() As String)
Dim name As String
Dim i As Integer

For i = LBound(arrs) To UBound(arrs)

    If Cells(3, i + 4) <> "" Then
        name = Cells(3, i + 4)

        Select Case name

            Case "Jeff"
                Call InfoPuller(arrs, 0)

            Case "Jonathan"
                Call InfoPuller(arrs, 1)

            Case "Jim"
                Call InfoPuller(arrs, 2)

            Case "Topher"
                Call InfoPuller(arrs, 3)

            Case "Brandon"
                Call InfoPuller(arrs, 4)

        End Select

    End If

Next i

End Function

Sub InfoPuller(ByRef link() As String, i As Integer)

Dim Pay1 As String, Pay2 As String, PayPeriod As String
Dim wkb As Workbook

Pay1 = Format(Cells(3, 2), "m-dd")
Pay2 = Format(Cells(24, 1), "m-dd")
PayPeriod = "" & Pay1 & " -- " & Pay2 & ""

'Jeff   (x,4) i = 0
'Jon    (x,5) i = 1
'Jim    (x,6) i = 2
'Topher (x,7) i = 3
'Brandon   (x,8) i = 4

Set wkb = Workbooks.Open(link(i))
' Pay period 1 Fill in

For j = 5 To 11
    ThisWorkbook.Sheets(PayPeriod).Cells(j, i + 4) = Workbooks.Open(link(i)).Worksheets(PayPeriod).Cells(j + 4, 9).Value
Next j

' Mileage / Bridge Week 1

Dim Mileage As Integer, Bridge As Integer, Store As Integer, Store2 As Integer
Dim MandB As String


Mileage = Workbooks.Open(link(i)).Worksheets(PayPeriod).Cells(28, 3).Value
Bridge = Workbooks.Open(link(i)).Worksheets(PayPeriod).Cells(29, 3).Value
MandB = Mileage & " / " & Bridge

ThisWorkbook.Sheets(PayPeriod).Cells(13, i + 4) = MandB

Store = Mileage
Store2 = Bridge

'Pay Period 2 Fill in
For j = 18 To 24
    ThisWorkbook.Sheets(PayPeriod).Cells(j, i + 4) = Workbooks.Open(link(i)).Worksheets(PayPeriod).Cells(j + 1, 9).Value
Next j

' Mileage / Bridge Week 2

Mileage = Workbooks.Open(link(i)).Worksheets(PayPeriod).Cells(28, 4).Value
Bridge = Workbooks.Open(link(i)).Worksheets(PayPeriod).Cells(29, 4).Value
MandB = Mileage & " / " & Bridge

ThisWorkbook.Sheets(PayPeriod).Cells(26, i + 4) = MandB

Store = Store + Mileage
Store2 = Store2 + Bridge

MandB = Store & " / " & Store2

ThisWorkbook.Sheets(PayPeriod).Cells(31, i + 4) = MandB

wkb.Close SaveChanges:=True

End Sub
此工作簿引用运行宏的母版页。付款期由日期决定。Workbooks.Open(link(i)…是因为如果我尝试Workbooks(link(i)),它不喜欢它(但它只打开一个副本,所以我不担心重复)


一旦它执行Thisworkbook.sheets(付款期),我点击了RTE-9下标超出范围错误。单元格对齐,我的拉取数据正确。出于隐私考虑,我将https链接缩短为仅Sharepoint。

稍微偏离主题,但我会在消化其余代码的同时问它,您在哪里关闭要打开的工作簿?尝试打开已打开的工作簿将导致您无法打开问题。(我只是不知道这是否是您遇到的问题的原因。)(a)我建议对
工作簿进行全局查找/替换。打开(链接(I))。
wbk。
以绕过我在前面的评论中提到的问题。(b)当它崩溃时,
PayPeriod
的值是多少?在
Pay1=格式(单元格(3,2),“m-dd”)
Pay2=格式(单元格(24,1),“m-dd”)中的不合格
单元格
意味着你指的是活动工作簿中的活动工作表,因此有可能不是包含你信息的工作表。@YowE3K所说的。隐式
ActiveWorkbook
ActiveSheet
引用是一种瘟疫-这正是为什么我们专门对Rubberduck进行检查以查找这些信息;-)有点离题,但我会在消化其余代码的同时问它,您在哪里关闭要打开的工作簿?试图打开已打开的工作簿会给您带来问题。(我只是不知道这是否是您遇到的问题的原因。)(a)我建议对
工作簿进行全局查找/替换。打开(链接(I))。
wbk。
以绕过我在前面的评论中提到的问题。(b) 当它崩溃时,
PayPeriod
的值是多少?
Pay1=Format(Cells(3,2),“m-dd”)
Pay2=Format(Cells(24,1),“m-dd”)
中不合格的
单元格
表示您引用的是活动工作簿中的活动工作表,因此可能不是包含您的信息的工作表。@YowE3K如是说。隐式
ActiveWorkbook
ActiveSheet
引用是一种瘟疫-这就是为什么我们专门对Rubberduck进行检查以查找这些引用;-)
For j = 5 To 11
ThisWorkbook.Sheets(PayPeriod).Cells(j, i + 4) = Workbooks.Open(link(i)).Worksheets(PayPeriod).Cells(j + 4, 9).Value
 Next j