Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.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中更新的迷你图_Vba_Excel_Sparklines - Fatal编程技术网

VBA-动态范围不在VBA中更新的迷你图

VBA-动态范围不在VBA中更新的迷你图,vba,excel,sparklines,Vba,Excel,Sparklines,我有一个非常类似的问题,我有: 创建了一个工作表,上面有一个参考动态范围的小图标 我有一个宏,它通过循环更新一些单元格(因此在每次循环迭代中都会更改闪烁) 复制大范围(包括小范围和其他命名范围) 将此范围粘贴到第二张图纸中(我不知道如何使用其他方法,因此我使用range.CopyPicture方法将范围作为图片粘贴到第二张图纸中,但是如果您知道有一种方法可以粘贴闪影本身,以便在我再次更新raneg时不会更新闪影,请让我知道) 现在,我的问题是,如果我在调试模式下单步执行代码,一切都会顺利进行,但

我有一个非常类似的问题,我有:

  • 创建了一个工作表,上面有一个参考动态范围的小图标
  • 我有一个宏,它通过循环更新一些单元格(因此在每次循环迭代中都会更改闪烁)
  • 复制大范围(包括小范围和其他命名范围)
  • 将此范围粘贴到第二张图纸中(我不知道如何使用其他方法,因此我使用
    range.CopyPicture
    方法将范围作为图片粘贴到第二张图纸中,但是如果您知道有一种方法可以粘贴闪影本身,以便在我再次更新raneg时不会更新闪影,请让我知道)
  • 现在,我的问题是,如果我在调试模式下单步执行代码,一切都会顺利进行,但是如果我让宏自动运行,那么闪屏就永远不会更新(所以它看起来总是像第一次运行宏时那样)

    作为我问题的一个简单示例,假设我的工作表中有以下内容:

    Cells A1-A10: 
          1,2,3...,10 (what I'll use for the sparkline range)
    
    Cell Named "StartCol": 
          =RANDBETWEEN(1,9)
    
    Cell Named "Width":    
          =RANDBETWEEN(1,10-StartCol)
    
    Dynamic range Named "SparkRange":  
          =OFFSET(Sheet1!$A$1,0,StartCol-1,1,Width)
    
    Cell With a SparkLine within a larger range Named "ToCopy"
    
    A Second Sheet Named "OutPut" with a named range "Output" where we'll start pasting to
    

    现在,简单的VBA代码:

    Sub Test()
        Sheets("Output").Select
    
        For i = 1 To 10
            Application.Calculate   ' Probably not needed, but putting it in to be safe
            Sheets("Sheet1").Range("ToCopy").CopyPicture
    
            Sheets("Output").Range("Output").Select
            Sheets("Output").Paste
            Sheets("Output").Names("output").RefersTo = Sheets("Output").Range("Output").Offset(Sheets("Sheet1").Range("ToCopy").Rows.Count + 2)
        Next i
    End Sub
    

    现在,这应该粘贴在10个不同的小图片中,但它会粘贴同一个图片的10个副本。如果我在调试模式下单步执行它(或者甚至设置一个断点,然后在VBA中点击
    F5
    ,它就会工作!) 再一次,我看了看上面提到的问题,并尝试了它的伎俩,但没有结果。。。。有没有人知道如何让这项工作的火花线


    非常感谢

    当您持续进行涉及excel/system处理多个事件的重复练习时,建议使用
    DoEvents
    将它们分开

    例如,在您的情况下,您需要给Excel足够的时间将图像复制到剪贴板,然后将其粘贴回去

    比如说

    Sheets("Sheet1").Range("ToCopy").CopyPicture
    
    Doevents '<~~ This gives enough time for the pic to be placed in Clipboard
    
    Sheets("Output").Paste
    
    DoEvents '<~~ This gives enough time for the pic to be pasted
    
    Sheets(“Sheet1”).Range(“ToCopy”).CopyPicture
    
    Doevents的BirdView:如果它在调试模式下工作,那么试试这个。添加
    Doevents
    ,以便有足够的时间将图像放入剪贴板,然后粘贴它?@SiddharthRout。。。刚刚试过。。。运气不好:(还有其他想法吗???-这一个很痛苦!!天哪-@SiddharthRout…我把它收回去!!!!-我把它放在另一个地方,它对你起了作用:你是我的英雄!!!请把它作为一个解决方案发布,这样我就可以给你信用了!!-我不能告诉你你帮了我多少忙!!!