vba - 为什么图表对象粘贴方法不起作用?
问题描述
当前代码:
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 并单步执行每一行)。
它将范围导出为图像(通过图表对象)并将其加载到用户窗体就可以了。
现在,当我在执行模式下运行它(加载表单)时,它不会产生相同的结果。
似乎该oCh.Chart.Paste
方法没有触发,因此图表中没有粘贴任何图像。
导出后,它会生成一张纯白色背景的图片。
所以我的问题是,为什么会这样?为什么它的行为不同?
PS:如果在粘贴(注释行)之前激活图表(但您需要先激活工作表),它将起作用。
但我只是想知道这是否是 Excel 中我们必须忍受的那些怪事之一。
解决方案
当你显示用户窗体时,显示用户窗体无模式。
或当您的程序包含 userform.show 时,图像效果很好。
UF_EMOTrans.Show (vbModeless)
或者
UF_EMOTrans.Show (0)
推荐阅读
- c# - 我试图从 SQL Server 中的列表 ID 标识中获取组合框数据,但出现检索错误
- algorithm - Theta(1) 操作是什么意思?
- python - distplot 中每个 bin 的计数
- r - 使用 ugarchroll 拟合 gjrGARCH 模型:出现错误 + 警告
- reactjs - 从 React 应用程序向 pm2 启动的 Express 服务器发出请求时出现“原因:CORS 请求未成功”
- python - 从目录中读取多个 CSV 文件以检查列数
- events - 如何检查或检测窗口是否在 SDL 中最小化或不活动?
- python - 我想使用for循环在python中的字典中获取每个主题的总和
- android - 自定义视图从Android中的自定义主题属性获取自定义属性值
- javascript - Ramda - 然后,否则,andFinally?