Excel VBA批量复制粘贴图表随机报错问题求助
Excel VBA图表复制随机报错问题
我编写了一段Excel VBA代码,用于将多个工作表中的图表复制到汇总页。代码可完成预期功能,但会随机抛出Excel错误,点击调试后继续运行即可正常执行。
错误完全随机,出现顺序不固定,有时不报错,有时报错1-10次不等,重复运行无改动的代码情况也不同。
报错信息包括:
- "指定的维度对当前图表类型无效。"
- "对象'_Worksheet'的'Paste'方法失败。"
曾出现第三种错误,后续会补充。
最初的While循环实现代码
Dim ua, udc, wa, wdc, su As Worksheet Set ua = ThisWorkbook.Worksheets("Unweighted Analysis") Set udc = ThisWorkbook.Worksheets("Unweighted Data Checks") Set wa = ThisWorkbook.Worksheets("Weighted Analysis") Set wdc = ThisWorkbook.Worksheets("Weighted Data Checks") Set su = ThisWorkbook.Worksheets("Summary Page") i = 1 j = 0 k = 15 l = 2 count = 1 While i < 11 Application.DisplayAlerts = False Application.CutCopyMode = False j = j + 1 If i < 3 Then ua.ChartObjects(j).Copy If i = 2 Then j = 0 End If ElseIf i < 6 Then udc.ChartObjects(j).Copy If i = 5 Then j = 0 End If ElseIf i < 8 And seq <> 4 Then wa.ChartObjects(j).Copy If i = 7 Then j = 0 End If ElseIf i < 11 And seq <> 4 Then wdc.ChartObjects(j).Copy If i = 10 Then j = 0 End If End If DoEvents su.Paste su.Cells(k, l) 'With su.Cells(k, l).PasteSpecial.xlPasteAll ' .Left = su.Cells(k, l).Left ' .Top = su.Cells(k, l).Top ' .Width = 500 'End With k = 15 + (i) * 25 i = i + 1 Wend Application.DisplayAlerts = True l = l + count * 11 count = count + 1
优化后的For Each循环代码
j = 0 k = 15 For i = 3 To 6 For Each Cht In ThisWorkbook.Worksheets(i).ChartObjects Application.CutCopyMode = False Debug.Print Cht.Name Cht.Copy su.Paste su.Cells(k, l) k = k + 25 j = j + 1 Next Cht Next i
内容的提问来源于stack exchange,提问作者Clay Reakes
相关产品推荐
相关产品推荐

