我做了两个链接的宏。
其中之一生成工作簿中某个工作表的副本。这里的问题是,我需要在所有复制的工作表中按shift+f9键来更新值。我已经使用了calculate和application.calculate = xl......
第二个宏调用第一个宏的值并对其执行操作。这里的问题是,在运行第一个宏并使用shift+f9更新所有的sheets..if之后,我使用指定的按钮运行第二个宏,它不会运行,但如果我单步执行宏并一步一步地运行它,它就可以正常运行。
我认为这是因为第一个宏的值需要时间来刷新,所以出现了这个问题。
Macro1:
Sub macro1()
Worksheets("Excel Inputs").Activate
If Sheets("Excel Inputs").Cells(11, "P") = 3 Then
Sheets("Valuation 02").Delete
Sheets("Valuation 03").Delete
ElseIf Sheets("Excel Inputs").Cells(11, "P") = 2 Then
Sheets("Valuation 02").Delete
End If
Length = WorksheetFunction.CountA(Range("B13:B15"))
For i = 1 To Length - 1
Sheets("Valuation 01").Copy After:=Sheets(4 + i)
Sheets(4 + i + 1).Name = "Valuation 0" & (i + 1)
Application.Calculation = xlCalculationAutomatic
Next i
Sheets("Excel Inputs").Cells(11, "P") = Length
End Sub有人能在这方面帮我吗?
发布于 2013-02-26 15:39:32
通常我会使用Application.onTime Now + TimeValue("hh:mm:ss"),"macro2"
来解决这类问题。您可以将macro2设置为在macro1的某个延迟的情况下运行。
并确保在macro1、Application.calculation = xlCalculationAutomatic或Application.CalculateFullRebuild的末尾
如果此方法不够好,则必须使用单元格或全局变量作为监视程序,以确定是否所有计算都已完成。
例如,在marco1的末尾,继续使用Application.onTime事件检查一些单元格值<> "“,如果尚未完成,则递归调用自身。
参考:Application.OnTime Application.CalculateFullRebuild
https://stackoverflow.com/questions/15083389
复制相似问题