【发布时间】:2019-06-28 14:57:22
【问题描述】:
我试图让 Visio 在我更改每个形状后立即更新它的填充颜色。
我尝试过使用各种方法 - screenupdate、showchanges、sendkeys "%^g" 但对颜色不起作用。仅将屏幕尺寸更改 0.01% 就会强制应用更改文本,这至少是一些事情。
我可以单步执行代码并且它可以工作,但是当我运行它时,直到最后颜色都没有变化。
我正在使用以下方法更改每个对象的颜色:
Application.ActiveWindow.Page.Shapes.ItemFromID(servshape(y - 1)).CellsU("Fillforegnd").FormulaU = "RGB(253, 190, 0)"
代码遍历日期列表并在需要时更改对象的颜色,问题是它只显示最后的更改。
列表中每个项目的循环大约为一秒,足以看到任何变化。我希望有一个简单的刷新命令,但这似乎只适用于数据记录集。
有什么方法可以在更改对象填充颜色后立即刷新它?
【问题讨论】:
-
你试过DoEvents吗? docs.microsoft.com/en-us/office/vba/language/reference/…
-
另外,您的代码可以通过执行“For Each”循环来改进,除非您确定 ID 存在,否则使用 ItemFromID 很容易出错!如果有人在执行期间的任何时候单击“外部”应用程序,在代码开头将 ActiveWindow/Page 分配给变量也应该提高稳定性。