当前代码:
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
当我以中断模式(使用F8并逐行浏览)运行它时,我当前的代码有效。
它将 Range 导出为图像(通过chartobject)并将其加载到用户窗体中。
现在,当我以执行模式(加载表单)运行它时,它不会产生相同的结果。
看来oCh.Chart.Paste
方法没有启动,因此图表中没有粘贴图像。
导出后,它会产生一张带有纯白色背景的图片。
所以我的问题是,为什么呢?为什么行为不同?
PS :
如果在粘贴(注释线)之前激活了图表(但您需要先激活工作表),它将起作用。
但是我只想知道这是否就是我们不得不忍受的Excel奇怪之处之一。
答案 0 :(得分:0)
显示用户窗体时,请显示无模式的用户窗体。
或当您的程序包含userform.show时,图像效果很好。
UF_EMOTrans.Show (vbModeless)
或
UF_EMOTrans.Show (0)