代码之家  ›  专栏  ›  技术社区  ›  L42

为什么图表对象粘贴方法不起作用?

  •  -1
  • L42  · 技术社区  · 6 年前

    当前代码:

    Const cName = "ChartDummy"
    Const rName = "Availability"
    Const iconSource = "C:\user.name\defaulfolder\"
    '/* Availability is a named Range for this example but can be any valid range */
    '/* UF_EmoTrans is a Userform with and Image Control named I_Console */
    
    Dim oCh As ChartObject, chImg As String
    Dim Ch As Object
    
    Application.DisplayAlerts = False
    With Sheet2
      '.Activate
      chImg = iconSource & "availIcon.jpg"
    
      Set oCh = .ChartObjects.Add(370, 14, 180, 277.2): oCh.Name = cName
      .Range(rName).CopyPicture xlScreen, xlBitmap
    
      'oCh.Activate
      oCh.Chart.Paste
      oCh.Chart.Export chImg, "JPG"
      '/* I call this procedure at UserForm_Initialize */
      UF_EMOTrans.I_Console.Picture = LoadPicture(chImg)
      oCh.Delete
    
    End With
    


    它出口 范围 作为图像(通过chartobject),并将其加载到用户窗体。

    How Image Control Looks

    现在,当我在执行模式下运行它(加载表单)时,它不会创建相同的结果。
    看来 oCh.Chart.Paste
    一旦导出,它将生成一幅背景为纯白色的图片。

    How it looks when in not in break mode

    所以我的问题是,为什么会这样?为什么它的行为会有所不同?

    附笔。 如果在粘贴(注释行)之前激活了图表(但需要先激活工作表),则该功能将起作用。
    但我只是想知道,这是否是我们不得不忍受的那些怪事之一。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Dy.Lee    6 年前

    显示Userform时,显示Userform无模式。

    或者,当您的程序包含userform.show时,图像效果良好。

    UF_EMOTrans.Show (vbModeless)
    

    UF_EMOTrans.Show (0)