Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.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仅在调试模式下运行_Vba_Image_Excel - Fatal编程技术网

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你是个天才
。选择
为我做的。请将其添加为答案,我们将接受它。还有一个附加问题,但不是必须的问题,是否有一种方法可以在不选择工作表上任何单元格的情况下取消选择图表对象?