Excel VBA:没有响应或使用DoEvents的超长运行时

时间:2015-06-19 13:38:41

标签: excel vba excel-vba

大家好,感谢您的阅读!

我已经找到了问题的答案,但还没有找到足够的答案......

这是我的代码的想法:在一个表中有一些列(chambre)和一些行(alveole)。如果这些匹配在另一个工作表的列表中,则它检查该日期是否在该第二个工作表上的两个日期之间。如果它匹配这3件事,那么就把表格

如果我添加" DoEvents"我的代码有效。在每个For,其他excel和vba停止响应。但这需要5分钟,我需要4个桌子......

我的代码效率不高吗?你有什么想法让它变得更好吗?任何建议表示赞赏!

这是代码

Sub alveoles()

Application.ScreenUpdating = True
Dim moment As Date
'variables Photo
Dim four As Integer
Dim chambre As Integer
Dim alveole As Integer
Dim aaa As Integer
Dim ccc As Integer

'variables Gems
Dim ligne As Integer
Dim enfournement As Date
Dim defournement As Date

Dim lastrow As Integer


'set date and lastrow
moment = Worksheets("Photo").Range("O2").Value
lastrow = Worksheets("Gems").Range("A" & Rows.Count).End(xlUp).Row
four = 1
'Four1 1 row
For ligne = 2 To lastrow
DoEvents

            For chambre = 1 To 38
            DoEvents
                For alveole = 1 To 6
                 DoEvents

                enfournement = Worksheets("Gems").Range("D" & ligne).Value
                defournement = Worksheets("Gems").Range("E" & ligne).Value

                If four = Worksheets("Gems").Range("A" & ligne).Value And _
                   chambre = Worksheets("Gems").Range("B" & ligne).Value And _
                   alveole = Worksheets("Gems").Range("C" & ligne).Value And _
                    moment > enfournement And _
                    moment < defournement Then

                                aaa = alveole + 5
                                ccc = chambre + 2

                            Worksheets("Photo").Cells(aaa, ccc).Interior.ColorIndex = 1 'NOIR

                End If
                Next alveole
            Next chambre
Next ligne

End Sub

1 个答案:

答案 0 :(得分:0)

从您的代码中假设您的最终目标是在特定条件下简单地设置单元格的格式,那么我认为VBA在这里是不必要的,您应该考虑使用条件格式。它内置于Excel,快速闪亮,易于维护。

如果您可以将数据转换为Excel表格(功能区:格式为表格),则条件格式将自动复制您添加的每个新行。

查看此Microsoft支持文章,向您展示它是如何完成的。

https://support.office.com/en-us/article/Use-a-formula-to-apply-conditional-formatting-in-Excel-2013-fed60dfa-1d3f-4e13-9ecb-f1951ff89d7f?ui=en-US&rs=en-ZA&ad=ZA