<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />VBA自动化。 我注意到在脚本完成之前图表才会启动。 我需要在脚本运行时看到它们,有没有办法解决这个问题?
另外,我认为相关。宏创建了几个图表。 但看似随意的一些未能发射。 它们出现在主窗口的“窗口”列表中,但在手动启动之前不会显示。 我假设我做错了什么,但不知道它是什么。
谢谢你的帮助。
我认为这是更可取的。每次在子例程中创建JMP实例,然后在退出时将应用程序指针置空,就会出现自动化问题。创建JMP实例并将其传入,确保其生命周期持续整个操作的长度,通常是最好的方法。
在您的情况下,底层窗口的初始化可能是问题。看起来你的新方法给了他们更多的时间来创建,所以当你让它们可见时,初始化就完成了,快速退出不会对事情造成伤害。
布赖恩
我可能已经找到了问题,也许你可以发表评论。
代码生成了一系列图表,然后发送要启动并可见的图表数组
事实证明这是不稳定的并且取决于时间。 即 - 使用更大的数据表会更频繁地失败
环
生成图表(索引)
下一个
环
图表(指数).Launch
图表(索引).Visable = True
下一个
我将其更改为在生成时启动图表并发送图表数组以使其可见。
到目前为止,我没有观察到任何令人憎恶的行为
环
生成图表(索引)
图表(指数).Launch
下一个
环
图表(索引).Visable = True
下一个
这对我来说可能很难复制。 我建议在可见调用之后在实际的LaunchCharts子例程中尝试Sleep。 最后将变量设置为Nothing,虽然良好的做法,但确实意味着它们可以被关闭。
布赖恩
我可以通过添加更多Sleep()来使情况变得更糟。 此配置通常无法启动第一个图表,但随后将启动所有图表。
Sub GenChartsReview(过滤为变体,_
Group As Variant,_
Iter1作为变体,_
Iter2 As Variant,_
Iter3 As Variant,_
Stats As Variant,_
迭代为布尔值)
Dim APPjmp,TBLjmp,DOCjmp
GetJMP APPjmp,TBLjmp,DOCjmp
昏暗的文本作为字符串
Dim Success As Boolean
Dim Stat,A,B,C,Index,PlotIndex,RowFilter()
昏暗的VChart()作为JMP.Variability
如果迭代那么
如果IsReal(Iter1)那么ReDim VChart((UBound(Iter1,2)+ 1))
如果IsReal(Iter2)那么ReDim VChart(UBound(VChart)*(UBound(Iter2,2)+ 1))
其他
ReDim VChart(1)
万一
指数= 0
对于A = 0到UBound(Iter1,2)
对于B = 0到UBound(Iter2,2)
成功=真
擦除RowFilter()
AddFilters RowFilter,Filter
ClearRowStates TBLjmp
如果IsValid(RowFilter)则Success = ExcludeGroup(RowFilter,TBLjmp)
的DoEvents
如果迭代那么
如果IsReal(Iter1)则IncludeItem Iter1(0,A),Iter1(1,A),TBLjmp
的DoEvents
如果IsReal(Iter2)则IncludeItem Iter2(0,B),Iter2(1,B),TBLjmp
的DoEvents
万一
设置VChart(Index)= DOCjmp.CreateVariabilityChart
如果成功然后GenerateVarCharts VChart(索引),统计,组
的DoEvents
指数=指数+ 1
睡200
下一个
下一个
睡500
如果成功那么
LaunchCharts VChart
其他
DialogAndLive“没有数据绘图,是否选择了过滤项目?”
万一
的DoEvents
ClearRowStates TBLjmp
设置APPjmp = Nothing
设置TBLjmp =无
设置DOCjmp = Nothing
结束子
Sub LaunchCharts(VChart()作为JMP.Variability)
昏暗的A.
对于A = 0到UBound(VChart) - 1
VChart(A).Launch
VChart(A).Visible = True
下一个
结束子
如果使用“高级编辑器”,则左下角会显示“附加”图标。 或者,你可以粘贴你的VB代码,让我知道你在做什么。
布赖恩
嗨布莱恩,
我非常感谢你的帮助。 我没有找到附加任何内容的任何规定。
嗨马特,
当你发布它时,我道歉地以某种方式错过了这个。 您能提供您正在使用的VBA源代码吗?通常,如果在出现计时问题时在代码中调用sleep(),它可以帮助分析时间来创建窗口。 随JMP一起提供的Analysis自动化示例程序(c:\ program files \ sas \ jmp \ 13 \ Samples \ Automation \ Visual Basic Samples \ Analysis.NET)提供了设置睡眠调用的示例。 您必须声明您正在调用操作系统函数。 我使用13作为路径的示例,但此代码在最后5个版本的JMP中提供。
我希望有帮助,
Brian Corcoran
JMP开发