【发布时间】:2017-05-09 01:49:21
【问题描述】:
我正在尝试创建一个宏,以便在用户打开工作簿时根据一些描述工作簿状态的条件来闪现视觉提示。
我想做的是用不影响单元格格式或任何内容的颜色填充整个屏幕/单元格区域/excel边框主题(这只是暂时的)。 我目前的做法是制作一个形状来填充屏幕并根据需要更改其填充颜色。
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
'allows for pauses in the millisecond range
Sub Flash_routine()
Dim FillCol As Long
FillCol = RGB(255, 186, 49)
ActiveSheet.Shapes.AddShape(msoShapeRectangle, 0, 0, 2000, 1000).Select
For x = 1 To 2 'phase ie. lightingup, empty
If x = 1 Then
IncVal = 0.5
Else
IncVal = 0.05
End If
For i = 0 To 1 Step IncVal
With Selection.ShapeRange.Fill
.Visible = msoTrue
.ForeColor.RGB = FillCol
If x = 1 Then
.Transparency = 1 - i
Else
.Transparency = i
End If
.Solid
End With
Sleep 50
'dictates time between successive shape fills
ActiveWindow.SmallScroll down:=3
ActiveWindow.SmallScroll up:=3
'refreshes screen view
Next i
Next x
Selection.Delete
End Sub
宏被 workbook_open 事件调用
但是有一些问题我希望得到帮助;
首先,这是正确的方法还是有一些我不知道的屏幕色调应用程序?
假设是 - 我的形状没有填满屏幕。我的印象是
AddShape(msoShapeRectangle, 0, 0, 2000, 1000)会将我的形状放在左上角 (0,0) 但实际上它被放置在稍微向下的位置(第 1 列,从我的窗口当前查看的位置向下 3 行,例如。如果我m看着F13:X55,它的顶角放在F16,对象覆盖了其余的单元格,但没有覆盖前3行)- 如何引用形状?我不知道怎么做,所以我将其保留为
Selection.ShapeRange.Fill,但我知道选择是糟糕的 VBA 实践 - 最后,滚动是更新窗口视图的最佳方式吗?出于某种原因,它有时甚至不起作用,整个宏运行时我看不到任何东西
我知道这是很多小问题,如果需要完全不同的方法,它们甚至可能不相关!此外,如果将 excel 主题从绿色更改为新颜色并逐渐变回是可能的,那将非常时髦。感谢您为新生儿 VBAer 提供解决方案或任何一般提示!
【问题讨论】: