更快的VBA宏为Excel

时间:2014-05-06 11:07:04

标签: excel vba excel-vba

我写了一个简短的VBA宏来在不同的工作表上运行几个宏。但它需要大约1 1/2分钟,因为它连续调用宏。如果可以立刻打电话给它们会很棒。:

Public Sub Gesamt_Rechner()
     Application.ScreenUpdating = False
     Application.Calculation = xlCalculationManual
     Application.EnableEvents = False

 On Error Resume Next

Sheets("Ra1").Select
Call Berechnen1
Sheets("Ra2").Select
Call Berechnen1
Sheets("Ra3").Select
Call Berechnen1
Sheets("Ra4").Select
Call Berechnen1
Sheets("Ra5").Select
Call Berechnen1
Sheets("Ra6").Select

......等等。

有没有办法更快地打电话给他们?或者每次都是:)

Berechnen1:

Sub Berechnen1()

  Range("P26").ClearContents
  Range("I38").GoalSeek Goal:=32, ChangingCell:=Range("P26")

If Range("P26") < 0 Then
Range("P26") = Application.RoundUp(Range("P26"), 0)
Else
Range("P26") = Application.RoundDown(Range("P26"), 0)
End If

'Hier wird das Delta für den Reiter "E1" OHNE RUNDEN berechnet'
  Range("P91").ClearContents
  Range("I103").GoalSeek Goal:=32, ChangingCell:=Range("P91")

End Sub

2 个答案:

答案 0 :(得分:1)

我从隐藏的代码库中推断出很多,所以我可能会离开。最初,我想也许你的代码在语法方面可能会收紧,所以使用

Sub Gesamt_Rechner()

    Dim l As Long
    For l = 1 To 6
        Sheets("Ra" + Chr$(48+l)).Select
        Call Berechnen1
    Next l

End Sub

而不是重复线条。话虽如此,即使在收紧代码后,我也不认为问题出在Excel VBA中。我应该想象你的目标寻求时间,我推断你有一些财务模型,“Delta”是投资银行经常使用的数学敏感词。下一步是收紧工作表公式。之后如果仍然很慢,你将不得不用C ++编写等效的模型。

答案 1 :(得分:0)

抱歉,我不认为这是可能的,VBA会逐行执行所有操作。如果执行速度很慢,只要尽可能提高效率,就尝试改进代码本身。