将模块中的Excel VBA代码应用于所有工作表

时间:2015-08-01 18:25:20

标签: excel vba excel-vba module

我已经在这几天苦苦挣扎了 我有以下代码,当满足某个If条件时,该代码会复制和粘贴值(工作簿每秒都会将实时数据送入多张纸)。
代码当前位于模块中,因为IF条件可以应用于工作簿中的所有工作表。

我遇到的问题是代码只能在活动表上运行。我需要它在工作簿中的所有工作表上运行。我尝试了多个循环但没有成功。理想情况下,我需要代码在后台运行所有工作表(即不激活它们)。任何帮助将不胜感激。

Dim TimeToRun

Sub auto_open()
    Call SchedulePrices
End Sub

Sub SchedulePrices()
    TimeToRun = Now + TimeValue("00:00:15")
    Application.OnTime TimeToRun, "CopyPrice"
End Sub

Sub CopyPrice()
    Calculate

If Range("AM7") = "1" Then

    Range("AM10:AM69").Value = Range("K9:K68").Value
    Range("AL10:AL69").Value = Range("B9:AM68").Value
    Range("AM8:AM9").Value = Range("C2:C3").Value

End If

'run the timer sub
    Call SchedulePrices

End Sub

Sub auto_close()
    On Error Resume Next
    Application.OnTime TimeToRun, "CopyPrice", , False
End Sub

1 个答案:

答案 0 :(得分:0)

Sub CopyPrice()
    Dim sht as Worksheet



    For Each sht in Worksheets
        If sht.Range("AM7") = "1" Then
            sht.Calculate

            sht.Range("AM10:AM69").Value = sht.Range("K9:K68").Value
            sht.Range("AL10:AL69").Value = sht.Range("B9:AM68").Value
            sht.Range("AM8:AM9").Value = sht.Range("C2:C3").Value

        End If
    Next

'run the timer sub
    Call SchedulePrices

End Sub