2017-09-25 181 views
-1

我有Excel/VBA应用程序,它根据提供的开始日期和结束日期运行查询。开始日期和结束日期在Excel工作表本身(不是表格)上提供。 要求是将默认开始日期设置为月的第一天,并将结束日期设置为昨天的日期,但用户应该能够覆盖日期。在EXCEL/VBA中设置默认日期

我可以通过使用公式设置默认的开始日期和结束日期,但是如果我们覆盖它并输入其他日期,则保存在其中的公式将消失。 请指导如何处理这个问题。

+0

有一个“复位”宏覆盖与公式任何手动输入?你准确地粘在哪里?有任何代码? –

+0

@Mat,刚才看到你的评论!我是VBA的新手,你能指导哪里写重置宏,以及如何解雇它?我想把类似于:如果工作表(“Sheet2”)。范围(“C3”),值=“”然后 \t工作表(“Sheet2”)。范围(“C3”)。值= TODAY() - 1 End If – SilverFish

回答

1

我通常通过使用另一列或单元格来解决此问题,并通过某些IF公式控制输出,其中用户覆盖优先级较高,公式默认值较低。喜欢的东西:

IF(UserOverride<>"", UserOverride, FormulaDefault)

编辑:
可以将此代码附加到某些按钮/快捷

Public Sub resetDefaults() 
    ThisWorkbook.Sheets(1).Cells(5, 5).Formula = "=TODAY()-1" 
End Sub 
+0

我想如果像Form_Load上的东西,我们可以设置默认日期。不确定这是如何在VBA中完成的。 (“Sheet2”)。Range(“C3”)。Value =“”Then \t Worksheets(“Sheet2”)。Range(“C3”)。 ).Value = TODAY() - 1 End If End Sub – SilverFish

+0

Excel/VBA中是否有等价的Form_load? – SilverFish

+1

如果你不想使用表单,你为什么要提到'Form_Load'?你的意思是“如何在工作簿打开时运行宏”?你可以谷歌精确的问题,并在10秒内得到答案。 –