2009-04-29 51 views
0

我在Excel中設置了一些VBA來比較兩個日期以查看它們是否相同。我遇到的問題是將單元格的變量分配給「ActualStartDate」後,它將刪除單元格中的所有內容。因此「ActualStartDate」分配正確,但同時刪除。指定單元格而不刪除它的原始內容

這是我的代碼,任何幫助都會很棒。 (這activecell東西是因爲它是相對引用)

Dim ActualStartDate, ProjectedStartDate 
ActiveCell.Offset(-1, -1).Range("A1").Select 
ActiveCell.FormulaR1C1 = ActualStartDate 
ActiveCell.Offset(1, 0).Range("A1").Select 
ActiveCell.FormulaR1C1 = ProjectedStartDate 
If ActualStartDate = ProjectedStartDate Then 
    ActiveCell.Offset(-1, -1).Range("A1").Interior.Color = RGB(0, 0, 255) 
End If 

當它運行時,它確實recogize我的考試日期是相同和顏色的單元格。它只是刪除包含「ActualStartDate」的單元格的內容

回答

1

所有這些操作都是將一個單元格向上移動一個單元格,並將其替換爲一個單元格的值。

Dim ActualStartDate 
ActiveCell.Offset(-1, -1).Range("A1").Select 
ActiveCell.FormulaR1C1 = ActualStartDate 

您創建ActualStartDate變量,但從不向其分配任何內容。因此,當您將ActualStartDate變量值應用於單元格時,它會「刪除」現有日期。

您可能想要做更像這樣的事情,但我不確定偏移量,因爲我不知道您是如何設計電子表格的。

Sub Button1_Click() 
    Dim ActualStartDate, ProjectedStartDate 
    ActiveCell.Offset(-1, -1).Select 
    ActualStartDate = ActiveCell.FormulaR1C1 
    ActiveCell.Offset(1, 0).Select 
    ProjectedStartDate = ActiveCell.FormulaR1C1 
    If ActualStartDate = ProjectedStartDate Then 
     ActiveCell.Offset(-1, -1).Interior.Color = RGB(0, 0, 255) 
    End If 
End Sub 
+0

這是有道理的,似乎工作了!謝謝!! – Shannon 2009-04-29 12:50:35

0

改變它們的值是不必要的前選擇的細胞,和FormulaR1C1是多餘藏漢你不是進入式的範圍內。以下應該完全一樣,但我認爲更容易遵循和調試。

**相同​​的警告和吉姆大約偏移,他們看起來有點古怪,但可能是何意**

 Dim ActualStartDate, ProjectedStartDate 

    ActualStartDate = ActiveCell.Offset(-1, -1) 
    ProjectedStartDate = ActiveCell.Offset(1, 0) 

    If ActualStartDate = ProjectedStartDate Then 
     ActiveCell.Offset(-1, -1).Interior.Color = RGB(0, 0, 255) 
    End If

Explicitly declaring the type of your variables as Date也是一個不錯的主意,因爲它們否則內部存儲爲Variant數據類型需要更多的內存,並可能導致意想不到的後果,因爲Excel有權決定如何處理數據。


    Dim ActualStartDate as Date 
    Dim ProjectedStartDate as Date 

    ActualStartDate = ActiveCell.Offset(-1, -1) 
    ProjectedStartDate = ActiveCell.Offset(1, 0) 

    If ActualStartDate = ProjectedStartDate Then 
     ActiveCell.Offset(-1, -1).Interior.Color = RGB(0, 0, 255) 
    End If 
相關問題