嗨,我的问题与刚才未回答的问题相同
MsgBox caused charts to appear as blank
基本上,我在Excel中进行一些质量控制,并尝试利用VBA使其变得更容易,我的代码遍历一列,直到找到下一块标记的数据,然后创建该数据和周围数据的图表以供目视检查,然后添加了一个错误框,供用户输入他们是否认为该数据的错误标记应该删除,然而,图表不会实际显示或呈现,直到用户与msgbox交互,因为图表可以在后台查看我希望用户可以只使用这个宏,快速查看图表,说是或否,错误标志要么删除或不删除,然后脚本移动到下一个标记的数据系列。第一次使用此功能时,请随时告诉我是否有任何格式不正确的地方。代码如下:
Dim SelRange As Range
Dim ExtRange As Range
Dim cht As Object
Dim errorflag As String
Selection.End(xlDown).Select
errorflag = ActiveCell
Range(Selection, Selection.End(xlDown)).Select
Selection.Offset(0, -1).Select
Set SelRange = Selection
Set ExtRange = SelRange.Offset(-SelRange.Rows.Count).Resize(3 * SelRange.Rows.Count)
ExtRange.Select
Set cht = ActiveSheet.Shapes.AddChart2
cht.Chart.SetSourceData Source:=ExtRange
cht.Chart.ChartType = xlXYScatterSmoothNoMarkers
cht.Chart.ChartTitle.Text = errorflag & " error flag of hydrograph of " & Cells(1, ActiveCell.Column).Value
MsgBox "Do you wish to delete the selected error flags?", vbYesNo
If Result = vbYes Then
SelRange.Clear
End If
我试过作为单独的子函数,但是我不能删除我想要的变量,因为它们在前一个子函数中声明了。
我试过加停顿。
我尝试添加第二个中间msgbox。
2条答案
按热度按时间r1zk6ea11#
您需要允许Excel在您创建图表之后和消息框之前处理图表。实现此目的的函数是
DoEvents
在这种情况下(以及其他一些情况下),需要调用
DoEvents
两次。演示
wbrvyc0a2#
将您的消息放在它自己的Sub中,以及来自答案的操作。
那就这么叫吧
注意,在这个调用中不能使用局部变量。