Excel vba - 屏幕闪烁和屏幕更新似乎没有效果

时间:2014-11-07 13:12:45

标签: excel vba flicker

我有一个我更新的字段,然后输入基准信息。 但是,屏幕闪烁。 如何阻止它闪烁?

代码如下:

Application.ScreenUpdating = False
Application.EnableEvents = False

Sheet3.Range("CJ91") = Benchmark2.Text

Dim myList()
Dim xCount As Long
Dim rng As Range
Dim xCell As Range

With Sheets("Choosing Funds").Range("ES2:ES81")
    .AutoFilter 1, "<>"

    On Error Resume Next
    Set rng = .Offset(1).Resize(.Rows.Count - 1).SpecialCells(xlCellTypeVisible)
    If Not rng Is Nothing Then
        ReDim myList(1 To rng.Cells.Count)
        For Each xCell In rng
            xCount = xCount + 1
            myList(xCount) = xCell.Text
        Next xCell
    End If
    .AutoFilter
End With

OffshoreFund_List.List = myList

Application.ScreenUpdating = True
Application.EnableEvents = True

1 个答案:

答案 0 :(得分:0)

亚当 - 我看到你已经多次发布过这个问题了。现在您已经使用实际代码发布了这个内容,为什么屏幕闪烁更为明显。

当您使用.AutoFilter时,Excel实际上必须在源电子表格上添加/修改现有的AutoFilter。这极有可能是闪烁的原因。

在这种情况下,您使用AutoFilter的原因似乎是因为您在源表中有一个值列表,但您只想将值打印到OffshoreFund_List,其中列E中的值不等于1

如果是这种情况,那么您应该做的是将您想要使用的整个范围复制到数组中。现在,然后为您的结果创建第二个数组,最终要打印到OffshoreFund_List。然后,遍历第一个数组,对于第五列中包含1的任何值,您可以复制到目标数组,忽略其他所有数组。然后打印结果。

现在,您的程序仍然需要与电子表格进行交互(抓取源数据并打印结果),但这不会导致屏幕闪烁。

让我知道这是否有效。