2009-04-29 64 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 
相关问题