我正在尝试编写一个宏,它将查看一系列时间,将每个宏与基准时间进行比较,然后在每个比较时间旁边生成一个注释。当我运行宏时,它将为范围中的第一个单元格执行此操作,但不会执行其余操作。
“ActivityData”工作表中的Cell C8是基准时间。 要比较的时间从“SIS”工作表的单元格F12开始,并且数量不同。
以下是完整的代码:
Sub TimeCalc()
Dim wb As Workbook
Dim SIS As Worksheet
Dim Act As Worksheet
Set wb = ActiveWorkbook
Set SIS = wb.Worksheets("SIS")
Set Act = wb.Worksheets("ActivityData")
'Navigate to start times
wb.Worksheets("SIS").Select
Range("f12").Select
SIS.Range(Selection, Selection.End(xlDown)).Select
'Compare start times
For Each rng In Selection
If Act.Range("C8").Value < rng.Value Then
ActiveCell.Offset(0, -1).Range("A1").Value = "Missed " & Format(Act.Range("c8").Value, "Medium time") & " - " & Format((rng.Value - 0.000694444), "Medium Time")
Else
End If
On Error Resume Next
Next rng
End Sub
感谢您的帮助!
答案 0 :(得分:1)
假设您想将结果放在您正在检查的数据左侧的列中:
Option Explicit
Sub TimeCalc()
Dim wb As Workbook
Dim SIS As Worksheet
Dim Act As Worksheet
Dim myBaseLineRng As Range
Dim compareRng As Range
Dim Rng As Range
On Error GoTo 0
Set wb = ActiveWorkbook
Set SIS = wb.Worksheets("SIS")
Set Act = wb.Worksheets("ActivityData")
Set myBaseLineRng = Act.Range("C8")
Set compareRng = SIS.Range(SIS.Range("F12"), SIS.Range("F12").End(xlDown))
'Compare start times
For Each Rng In compareRng.Cells
If myBaseLineRng.Value < Rng.Value Then
Rng.Offset(0, -1).Value = "Missed " & Format(myBaseLineRng.Value, "Medium time") & " - " & Format((Rng.Value - 0.000694444), "Medium Time")
End If
Next Rng
End Sub
答案 1 :(得分:0)
您只是将基准列表中的值与活动列表中的第一个值进行比较,如If语句中所示。如果我理解你的问题,你将需要遍历你的活动列表以检查每一行
即遍历活动列表 对于活动列表中的每个值 l浏览基准时间以检查 活动列表中的下一个值。
除非我误解了你的问题。