将模块中的 Excel VBA 代码应用于所有工作表
Applying Excel VBA code in a module to all worksheets
几天来我一直在为这个问题苦恼。
我有以下代码,当满足某个 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
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
几天来我一直在为这个问题苦恼。
我有以下代码,当满足某个 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
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