VBA仅在调试模式下运行
我想做的是从一张工作表中复制一组单元格作为图片,然后将其粘贴到另一张工作表中的图表对象中。以下是使用的代码,在调试模式下使用时运行良好,但在正常运行时,我没有看到图像粘贴到图表中VBA仅在调试模式下运行,vba,image,excel,Vba,Image,Excel,我想做的是从一张工作表中复制一组单元格作为图片,然后将其粘贴到另一张工作表中的图表对象中。以下是使用的代码,在调试模式下使用时运行良好,但在正常运行时,我没有看到图像粘贴到图表中 Sub copy_paste_KDT() ' ' copy_paste_KDT Macro ' ' Worksheets("KDT").Range("J12:AB37").CopyPicture Appearance:=xlScreen, Format:=xlPicture Dim wb_path
Sub copy_paste_KDT()
'
' copy_paste_KDT Macro
'
'
Worksheets("KDT").Range("J12:AB37").CopyPicture Appearance:=xlScreen, Format:=xlPicture
Dim wb_path As String
wb_path = Application.ThisWorkbook.Path
'Dim objCht As ChartObject
'Set objCht = ActiveSheet.ChartObjects("KDT Rectangle")
'If Not objCht Is Nothing Then
If ActiveSheet.ChartObjects.Count > 0 Then
ActiveSheet.ChartObjects("KDT Rectangle").Delete
End If
With Worksheets("profile")
'Creating the Chart
.ChartObjects.Add(690, 125, 550, 245).Name = "KDT Rectangle"
End With
If Range("B11").Value = 0 Then
With Worksheets("profile")
Application.ScreenUpdating = True
'Application.Wait (Now + TimeValue("00:00:01"))
With .ChartObjects("KDT Rectangle")
.Chart.Paste
End With
End With
End If
End Sub
我也尝试过一些事情,比如在粘贴图像之前等待1到10秒,但没有用。即使尝试将循环从1计数到10亿,也没有用。最后,我想检查图像是否粘贴到工作表的随机单元格中,这是否有效,但不在图表对象中
如果有人能帮我找出为什么图像没有粘贴,我将不胜感激
TL,DR:Macro复制粘贴excel的一部分作为屏幕截图到图表中可以成功创建图表,但在运行时无法填充图像(F5),但在调试模式(F8)下工作正常。尽管我使用的是excel 2010,您的代码在测试中对我来说运行良好 您可以尝试在
图表之前插入选择。粘贴这可能有助于在图表内部粘贴。请参阅下面的代码,只是在原始代码中添加了这一行,所以您几乎就完成了
Option Explicit
Sub copy_paste_KDT()
'
' copy_paste_KDT Macro
'
'
Worksheets("KDT").Range("J12:AB37").CopyPicture Appearance:=xlScreen, Format:=xlPicture
Dim wb_path As String
wb_path = Application.ThisWorkbook.Path
'Dim objCht As ChartObject
'Set objCht = ActiveSheet.ChartObjects("KDT Rectangle")
'If Not objCht Is Nothing Then
If ActiveSheet.ChartObjects.Count > 0 Then
ActiveSheet.ChartObjects("KDT Rectangle").Delete
End If
With Worksheets("profile")
'Creating the Chart
.ChartObjects.Add(690, 125, 550, 245).Name = "KDT Rectangle"
End With
If Range("B11").Value = 0 Then
With Worksheets("profile")
Application.ScreenUpdating = True
'Application.Wait (Now + TimeValue("00:00:01"))
With .ChartObjects("KDT Rectangle")
.Select 'Just added this
.Chart.Paste
End With
End With
End If
End Sub
您确定activesheet
和activeworkbook
没有问题吗?@FunThomas该代码是我复制粘贴的代码,在调试模式(F8)下运行时工作正常。它对我有效。您使用的是什么excel版本?我使用的是excel 2010,它也可以正常工作。当您使用Range(“B11”).Value=0
时,它将从活动页面获取值,而不是添加您想要查看的特定工作表(“profile”).Range(“B11”).Value=0
。也可以试着把。选择放在图表之前。粘贴只是为了测试你的图表是否可以访问。@Jean PierreOosthuizen你是个天才。选择
为我做的。请将其添加为答案,我们将接受它。还有一个附加问题,但不是必须的问题,是否有一种方法可以在不选择工作表上任何单元格的情况下取消选择图表对象?