VBA 运行提示下标越界
PrivateSubCommandButton1_Click()'申明变量保存稼动率文件存放的地址、文件名DimfoldNameAsStringDimfilename(4...
Private Sub CommandButton1_Click()
'申明变量保存稼动率文件存放的地址、文件名
Dim foldName As String
Dim filename(4) As String
'申明for循环用变量
Dim i, j As Integer
'申明需要操作的表名变量
Dim tableNameIn As String
Dim tableName As String
'申明工作簿、工作表的替代变量
Dim fromBookName, toBookName As Workbook
Dim fromSheet, toSheetName As Worksheet
'对地址、文件名赋值
foldName = "\\Cnsewfil03.ap.sony.com\maf03\第三制造部门\Maf-COM\制造部\制造2课\03.制造2课2系【秘】\14.后工程稼动率\2015稼动率\4月产线稼动率\"
filename(1) = "DSF产线稼动率.xlsm"
filename(2) = "TCO设备稼动率.xlsm"
filename(3) = "厚度机设备稼动率.xlsm"
filename(4) = "印字机设备稼动率.xlsm"
''''''''''''''''''''''''''''''''''''''''''
''''''''''''''
'先将稼动率目标填入到目标单元格
If Cells(3, 2).Value = "DSF" Then
For i = 3 To 33
Cells(4, i).Value = 0.92
Next
End If
'只读打开对应的稼动率表
'不同设备稼动率表的数据结构是完全相同的
''''''''''
''''''根据设备名称选择表名
If Cells(3, 2).Value = "DSF" Then
tableName = foldName + filename(1)
End If
' On Error GoTo err0
Workbooks.Open filename:=tableName, ReadOnly:=True
'''''''''分别对源、目标表进行变量替代
Set fromBookName = Workbooks(filename(1))
Set toBookName = Workbooks("保全资料.xlsm")
Set toSheetName = toBookName.Worksheets("OUTPUT")
'遍历表中每条线的数据,并且将实际M-tep数据考入的目标单元格
'→
For i = 1 To 8
tableNameIn = Str(i) & "LINE"
Set fromSheet = Workbooks(filename(1)).Worksheets(tableNameIn)
For j = 3 To 33
toSheetName.Cells(4 + i, j).Value = fromSheet.Cells(j + 1, 23).Value
Next
Next
'完成目标数据的输入,关闭源表单
'→
fromBookName.Close
End Sub
'运行出现 下标越界问题
单句执行显示出错语句: Set fromSheet = Workbooks(filename(1)).Worksheets(tableNameIn)
已解决,谢谢了 展开
'申明变量保存稼动率文件存放的地址、文件名
Dim foldName As String
Dim filename(4) As String
'申明for循环用变量
Dim i, j As Integer
'申明需要操作的表名变量
Dim tableNameIn As String
Dim tableName As String
'申明工作簿、工作表的替代变量
Dim fromBookName, toBookName As Workbook
Dim fromSheet, toSheetName As Worksheet
'对地址、文件名赋值
foldName = "\\Cnsewfil03.ap.sony.com\maf03\第三制造部门\Maf-COM\制造部\制造2课\03.制造2课2系【秘】\14.后工程稼动率\2015稼动率\4月产线稼动率\"
filename(1) = "DSF产线稼动率.xlsm"
filename(2) = "TCO设备稼动率.xlsm"
filename(3) = "厚度机设备稼动率.xlsm"
filename(4) = "印字机设备稼动率.xlsm"
''''''''''''''''''''''''''''''''''''''''''
''''''''''''''
'先将稼动率目标填入到目标单元格
If Cells(3, 2).Value = "DSF" Then
For i = 3 To 33
Cells(4, i).Value = 0.92
Next
End If
'只读打开对应的稼动率表
'不同设备稼动率表的数据结构是完全相同的
''''''''''
''''''根据设备名称选择表名
If Cells(3, 2).Value = "DSF" Then
tableName = foldName + filename(1)
End If
' On Error GoTo err0
Workbooks.Open filename:=tableName, ReadOnly:=True
'''''''''分别对源、目标表进行变量替代
Set fromBookName = Workbooks(filename(1))
Set toBookName = Workbooks("保全资料.xlsm")
Set toSheetName = toBookName.Worksheets("OUTPUT")
'遍历表中每条线的数据,并且将实际M-tep数据考入的目标单元格
'→
For i = 1 To 8
tableNameIn = Str(i) & "LINE"
Set fromSheet = Workbooks(filename(1)).Worksheets(tableNameIn)
For j = 3 To 33
toSheetName.Cells(4 + i, j).Value = fromSheet.Cells(j + 1, 23).Value
Next
Next
'完成目标数据的输入,关闭源表单
'→
fromBookName.Close
End Sub
'运行出现 下标越界问题
单句执行显示出错语句: Set fromSheet = Workbooks(filename(1)).Worksheets(tableNameIn)
已解决,谢谢了 展开
推荐于2016-08-04 · 知道合伙人软件行家
关注
展开全部
这个问题有下面几个问题点:
1、tableNameIn 这张表没有在工作簿Workbooks(filename(1))里。
2、filename(1)这个工作簿没有打开。
你在出错后,按CTRL+G,输入:
?tableNameIn
然后回车,看看表名是什么。
然后输入:
?filename(1)
回车,看看,这两个变量的结果,应该就判断出来了
1、tableNameIn 这张表没有在工作簿Workbooks(filename(1))里。
2、filename(1)这个工作簿没有打开。
你在出错后,按CTRL+G,输入:
?tableNameIn
然后回车,看看表名是什么。
然后输入:
?filename(1)
回车,看看,这两个变量的结果,应该就判断出来了
追问
但是前面已经打开这张表了啊,而且确认了tableNameIn确实与sheet名称相同“1Line”
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询