EXCEL VBA 执行不下去, 提示应用程序定义或对象定义错误,求解答

到Cells(dic(s_v), 11) = xlApp.Workbooks("ITS电气元器件库.xlsm").Worksheets("Sheet1").Cells(i, 5), 提示应用程序定义或对象定义错误,求解答

Private Sub CommandButton2_Click()
Application.ScreenUpdating = True
Dim dic As Object, i As Long, m As Integer, n As Integer
Set dic = CreateObject("Scripting.Dictionary")
Dim xlApp As Excel.Application
Dim xlbook As Excel.Workbook
Dim xlsheet As Excel.Worksheet
Set xlApp = New Excel.Application
Set xlbook = xlApp.Workbooks.Open("D:\电气元器件价格查询\ITS电气元器件库.xlsm")
xlApp.Visible = False
Set xlsheet = xlbook.Worksheets("Sheet1")
range("j3:t350").ClearContents
range("j3:t350").Interior.ColorIndex = 2
n = xlApp.WorksheetFunction.CountA(xlApp.Sheets("Sheet1").range("d:d"))
m = WorksheetFunction.CountA(range("d:d"))
For i = 3 To m
If Not dic.Exists(Worksheets("Sheet1").Cells(i, 4).Value) Then dic.Add Worksheets("Sheet1").Cells(i, 4).Value, i
Next i
xlApp.Workbooks("ITS电气元器件库.xlsm").Worksheets("Sheet1").Select
For i = 3 To n
s_v = xlApp.Workbooks("ITS电气元器件库.xlsm").Worksheets("Sheet1").Cells(i, 4).Value
s_vv = xlApp.Workbooks("ITS电气元器件库.xlsm").Worksheets("Sheet1").Cells(i, 7).Value
If dic.Exists(s_v) Or dic.Exists(s_vv) Then
Cells(dic(s_v), 11) = xlApp.Workbooks("ITS电气元器件库.xlsm").Worksheets("Sheet1").Cells(i, 5)
Cells(dic(s_v), 12) = xlApp.Workbooks("ITS电气元器件库.xlsm").Worksheets("Sheet1").Cells(i, 6)
Cells(dic(s_v), 13) = xlApp.Workbooks("ITS电气元器件库.xlsm").Worksheets("Sheet1").Cells(i, 7)
Cells(dic(s_v), 14) = xlApp.Workbooks("ITS电气元器件库.xlsm").Worksheets("Sheet1").Cells(i, 8)
Cells(dic(s_v), 15) = xlApp.Workbooks("ITS电气元器件库.xlsm").Worksheets("Sheet1").Cells(i, 9)
Cells(dic(s_v), 16) = xlApp.Workbooks("ITS电气元器件库.xlsm").Worksheets("Sheet1").Cells(i, 10)
Cells(dic(s_v), 17) = xlApp.Workbooks("ITS电气元器件库.xlsm").Worksheets("Sheet1").Cells(i, 11)
Cells(dic(s_v), 18) = xlApp.Workbooks("ITS电气元器件库.xlsm").Worksheets("Sheet1").Cells(i, 12)
Cells(dic(s_v), 19) = xlApp.Workbooks("ITS电气元器件库.xlsm").Worksheets("Sheet1").Cells(i, 13)
Cells(dic(s_v), 20) = xlApp.Workbooks("ITS电气元器件库.xlsm").Worksheets("Sheet1").Cells(i, 14)
Cells(dic(s_v), 10) = xlApp.Workbooks("ITS电气元器件库.xlsm").Worksheets("Sheet1").Cells(i, 2)
range("j" & dic(s_v) & ":t" & dic(s_v)).Interior.ColorIndex = 4
End If
Next i
xlbook.Close
最新回答
人心可畏

2024-10-18 05:19:07

Cells(dic(s_v), 11)不对。dic(s_v)返回的只是空值,造成cells引用错误。
以i=3时为例,
1)Workbooks("ITS电气元器件库.xlsm").Worksheets("Sheet1")的D3单元格的值如果是数字,那么直接引用就好了,不必再加个dic捣乱了。改成Cells(s_v, 11)即可
2)如果是别的文本之类的需要转换成数字的,需要看具体情况而定。
唱一半的丶情歌

2024-10-18 04:37:11

vba 代码帮调试修改