2013-04-03 175 views
1

我正在嘗試編寫一個宏,它將查看一系列時間,比較每個基準時間,然後在每個比較時間旁邊生成一個註釋。當我運行宏時,它會爲範圍內的第一個單元格執行此操作,但對於其他單元格則不會。比較範圍內的每個單元格到另一個單元格

「ActivityData」工作表中的單元格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

爲什麼'上的錯誤恢復Next'? –

+0

嗨Siddharth,這只是我遇到問題的一部分代碼。除此之外還有其他一些東西,但它的工作原理應該如此。 – user2237763

+1

我通常會建議不要使用'OERN'好吧,我在這裏看到你的代碼是一個建議,它實際上可以幫助你識別錯誤。看到這個鏈接http://stackoverflow.com/questions/10714251/excel-macro-avoiding-using-select/10718179#10718179所以修改你的代碼和工作與對象,而不是'選擇'這種方式,你可以調試它,看看如果代碼遍歷該範圍的每個單元格:) –

回答

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 
+0

這樣做。謝謝Taliesin! – user2237763

0

您只將基準列表中的值與活動列表中的第一個值進行比較,如If語句中所示。你將需要遍歷您的活動列表,檢查每一行,如果我明白你的問題正確

即循環遍歷活動列表 通過您的基準倍,在活動列表 循環每個值來檢查針對 NEXT值在活動列表中。

除非我誤解了你的問題。

+0

是的,這就是我想要做的事。我正在比較If語句來包裝我的頭來構造這些。 – user2237763

相關問題